Version complète: sur le forum Webmaster Hub : Probleme de flash/XML
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > Flash et ActionScript
djp1988
J'importe du text via XML dans flash et j'ai un soucis d'accents, quand je les écris normal en XML ils n'apparaisent pas dans flash et quand je les ecrit en code (è .....) ils apparisent en toute lettre "$egrave;" !!

Comment puis-je contourner ce problème?
mohican83
Salut,

Dans le flash, tu as indiqué que la zone de texte reçoit du html?

@+
djp1988
c'est simplement du champ de text dynamique avec un nom d'identité, avec actionScript j'envoie du text dans un attribute qui se trouve dans mon document xml
mohican83
Re,

tu utilises bien en as pour ton champs text : mon_text.htmlText="qsdf" ?

@+

djp1988
Mon ActionScript:

CODE
import mx.utils.Delegate;
import mx.transitions.Tween;
import mx.transitions.easing.*;

var numOfItems:Number;
var radiusX:Number = 300;
var radiusY:Number = 75;
var centerX:Number = Stage.width / 2;
var centerY:Number = Stage.height / 2;
var speed:Number = 0.05;
var perspective:Number = 130;
var home:MovieClip = this;
theText._alpha = 0;

var tooltip:MovieClip = this.attachMovie("tooltip","tooltip",10000);
tooltip._alpha = 0;

var xml:XML = new XML();
xml.ignoreWhite = true;

xml.onLoad = function()
{
var nodes = this.firstChild.childNodes;
numOfItems = nodes.length;
for(var i=0;i<numOfItems;i++)
{
var t = home.attachMovie("item","item"+i,i+1);
t.angle = i * ((Math.PI*2)/numOfItems);
t.onEnterFrame = mover;
t.toolText = nodes[i].attributes.tooltip;
t.content = nodes[i].attributes.content;
t.icon.inner.loadMovie(nodes[i].attributes.image);
t.r.inner.loadMovie(nodes[i].attributes.image);
t.icon.onRollOver = over;
t.icon.onRollOut = out;
t.icon.onRelease = released;
}
}

function over()
{
home.tooltip.tipText.text = this._parent.toolText;
home.tooltip._x = this._parent._x;
home.tooltip._y = this._parent._y - this._parent._height/2;
home.tooltip.onEnterFrame = Delegate.create(this,moveTip);
home.tooltip._alpha = 100;
}

function out()
{
delete home.tooltip.onEnterFrame;
home.tooltip._alpha = 0;
}

function released()
{
home.tooltip._alpha = 0;
for(var i=0;i<numOfItems;i++)
{
var t:MovieClip = home["item"+i];
t.xPos = t._x;
t.yPos = t._y;
t.theScale = t._xscale;
delete t.icon.onRollOver;
delete t.icon.onRollOut;
delete t.icon.onRelease;
delete t.onEnterFrame;
if(t != this._parent)
{
var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,t._xscale,0,1,true);
var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,t._yscale,0,1,true);
var tw3:Tween = new Tween(t,"_alpha",Strong.easeOut,100,0,1,true);
}
else
{
var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,t._xscale,100,1,true);
var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,t._yscale,100,1,true);
var tw3:Tween = new Tween(t,"_x",Strong.easeOut,t._x,128,1,true);
var tw4:Tween = new Tween(t,"_y",Strong.easeOut,t._y,320,1,true);
var tw5:Tween = new Tween(theText,"_alpha",Strong.easeOut,0,100,1,true);
theText.text = t.content;
var s:Object = this;
tw.onMotionStopped = function()
{
s.onRelease = unReleased;
}
}
}
}

function unReleased()
{
//BONUS Section
var sou:Sound = new Sound();
sou.attachSound("sdown");
sou.start();

delete this.onRelease;
var tw:Tween = new Tween(theText,"_alpha",Strong.easeOut,100,0,0.5,true);
for(var i=0;i<numOfItems;i++)
{
var t:MovieClip = home["item"+i];
if(t != this._parent)
{
var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,0,t.theScale,1,true);
var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,0,t.theScale,1,true);
var tw3:Tween = new Tween(t,"_alpha",Strong.easeOut,0,100,1,true);
}
else
{
var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,100,t.theScale,1,true);
var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,100,t.theScale,1,true);
var tw3:Tween = new Tween(t,"_x",Strong.easeOut,t._x,t.xPos,1,true);
var tw4:Tween = new Tween(t,"_y",Strong.easeOut,t._y,t.yPos,1,true);
tw.onMotionStopped = function()
{
for(var i=0;i<numOfItems;i++)
{
var t:MovieClip = home["item"+i];
t.icon.onRollOver = Delegate.create(t.icon,over);
t.icon.onRollOut = Delegate.create(t.icon,out);
t.icon.onRelease = Delegate.create(t.icon,released);
t.onEnterFrame = mover;
}
}
}
}
}


function moveTip()
{
home.tooltip._x = this._parent._x;
home.tooltip._y = this._parent._y - this._parent._height/2;
}

xml.load("icons.xml");

function mover()
{
this._x = Math.cos(this.angle) * radiusX + centerX;
this._y = Math.sin(this.angle) * radiusY + centerY;
var s = (this._y - perspective) /(centerY+radiusY-perspective);
this._xscale = this._yscale = s*100;
this.angle += this._parent.speed;
this.swapDepths(Math.round(this._xscale) + 100);
}

this.onMouseMove = function()
{
speed = (this._xmouse-centerX)/2500;
}


et mon xml se présent comme si:

CODE
<icons>
<icon image="img1.png" tooltip="3e trimestre 07" content="3e trimestre 2007 N° 123
SOMMAIRE
Avant-Propos - Max GOYFFON
• Auguste Césaire Phisalix (1852-1906) : un savant au pays de
Courbet  -  Christophe CUPILLARD
• L’œuvre scientifique de Césaire Phisalix (1852-1906),
découvreurdu sérum antivenimeux - Rosany BOCHNER& Max GOYFFON
• Les amphibiens venimeux  - Jean LESCURE
• Épidémiologie des envenimations - Jean-Philippe CHIPPAUX
• Actualités surles sérums antivenimeux et la sérothérapie  - Jean-Philippe CHIPPAU" />
</icons>


Mais tout va bien j'arrive à faire afficher l'attribut "Content" de mon xml dans le champ de text dynamique dans Flash, mais Flash igniore les accents !
mohican83
Salut,

Tu crée ton xml à la volée ou avec un éditeur de texte?
Si c'est un éditeur de texte, tu l'enregistres en UTF-8
Si c'est à la volée utilises-tu utf8_encode?

@+
eurl
Quelques pistes :

Encodage du fichier :

UTF-8 ? (pas d'accent il me semble)

ANSI ? (là il accèpte tout : caractère asiatique (avec la bonne police) , Néerlandais ... )

CDATA (non ça c'est pour des balises)

Police dans flash accèpte les accents ? (facile à vérifier)

non? à creuser sur google...
djp1988
c'est en

CODE
<?xml version="1.0" encoding="ISO-8859-1"?>
eurl
oui mais au moment de l'enregistrement choisi ANSI comme encodage de fichier Vérifie que tu soit pas en US-ASCII (sans accent) dans l'encodage du fichier (tu le vois quand tu sauves dans bloc-note).

ANSI = ISO-8859-1

Aller pour clore j'ai trouvé ça :
CITATION
Les problèmes
Il est clair que le codage UTF-8 sur 2 octets de é est différent de son codage ANSI sur 1 octet. De fait, nous l'avons vu, seuls les 127 premiers caractères (qui représentent ce que l'on appelle l'ASCII simple) ont le même codage en ANSI et en UTF-8. Ainsi, on peut s'attendre à avoir des problèmes si le système utilisé pour l'encodage du texte n'est pas le même que celui utilisé pour sa lecture. Sans surprise, il y a des problèmes ! Le tableau suivant montre les quatre cas possibles et les deux types de problèmes que l'on peut rencontrer.

Texte codé en ANSI
et lu comme de l'ANSI
OK

Texte codé en UTF-8
et lu comme de l'ANSI
PB : caractères bizarres à la place des accents


Texte codé en ANSI
et lu comme de l'UTF-8
PB : caractères chinois?? à la place des accents

Texte codé en UTF-8
et lu comme de l'UTF-8
OK


ici

eurl
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.