Bonjour,
Je cherche à publier un site AS3 qui fonctionne bien en local mais une fois sur un serveur distant, je rencontre un problème récurrent d'affichage des textes. La structure (en fait tout sauf les textes) se charge correctement mais sur :
IE6 : presque tous les textes sont chargés mais ça varie, le texte manquant (sur une dizaine) n'est pas toujours le même
Firefox 3 : aucun fichier texte n'est chargé
Chrome : idem
Safari : idem
Dans ce cas, j'ai utilisé la balise object avec DW CS3. Mais en remontant dans les forums, j'ai trouvé swfObject qui me pose le même problème et la balise <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"> dont le résultat (si c'est 1.0 ou 4.0) m'a donné des textes plus ou moins bien chargés sur IE6 (les autres navigateurs restent insensibles).
Du coup, j'ai essayé de forcer un rechargement des textes (dont voici le code de la classe) dans mon AS principal en reprenant le URLLoader de la classe, en vain :
// Classe blocTexte
package{
import flash.text.*;
import flash.net.*;
import flash.events.*;
import fl.controls.UIScrollBar;
import flash.display.*;
public class blocTexte extends Sprite{
private var posXBloc, posYBloc, largeurBloc, hauteurBloc, couleurFondBloc:Number;
public var barreBloc:Boolean;
public var nomFichierCSSBloc, nomFichierTxtBloc:String;
public var chargeurBloc, chargeurCSS:URLLoader;
public var contenuBloc:String;
public var champsTxt:TextField = new TextField();
public var barreDefil:UIScrollBar = new UIScrollBar;
// A. Constructeur
public function blocTexte(posXB:Number, posYB:Number, largB:Number, hautB:Number, coulB:Number, barrB:Boolean, cssB:String, txtB:String){
posXBloc = posXB;
posYBloc = posYB;
largeurBloc = largB;
hauteurBloc = hautB;
couleurFondBloc = coulB;
barreBloc = barrB;
nomFichierCSSBloc = cssB;
nomFichierTxtBloc = txtB;
creationChampsTxt();
if(barreBloc == true){
creationBarreDefil();
}
chgtTxt();
chgtCss();
}
// B. Création du champs texte
function creationChampsTxt():void{
var formatBloc:TextFormat = new TextFormat();
//formatBloc.leading = -2;
formatBloc.size = 4;
// Paramètres variables
champsTxt.x = posXBloc;
champsTxt.y = posYBloc;
champsTxt.width = largeurBloc;
champsTxt.height = hauteurBloc;
champsTxt.background = true;
champsTxt.backgroundColor = couleurFondBloc;
// Paramètres fixes
champsTxt.type = "dynamic"
champsTxt.multiline = true;
champsTxt.wordWrap = true;
champsTxt.selectable = false;
champsTxt.border = false;
champsTxt.defaultTextFormat = formatBloc;
champsTxt.antiAliasType = "advanced";
addChild(champsTxt);
}
// C. Création scrollBar
function creationBarreDefil():void{
barreDefil.scrollTarget = champsTxt;
barreDefil.height = champsTxt.height;
barreDefil.move(champsTxt.x + champsTxt.width + 5, champsTxt.y);
addChild(barreDefil);
}
// D. Chargeur de texte
function chgtTxt():void{
var chargeurTXT:URLLoader = new URLLoader();
chargeurTXT.load(new URLRequest(nomFichierTxtBloc));
chargeurTXT.addEventListener(Event.COMPLETE, chargementTxt);
function chargementTxt(e:Event):void{
contenuBloc = URLLoader(e.target).data;
}
}
// E. Chargeur CSS
function chgtCss():void{
var chargeurCSS:URLLoader = new URLLoader();
chargeurCSS.load(new URLRequest(nomFichierCSSBloc));
chargeurCSS.addEventListener(Event.COMPLETE, chargementCss);
function chargementCss(e:Event):void{
var cssStyle:StyleSheet = new StyleSheet();
cssStyle.parseCSS(chargeurCSS.data);
champsTxt.styleSheet = cssStyle;
champsTxt.htmlText = contenuBloc;
barreDefil.update();
}
}
}
}Je me demande s'il ne faut pas un timer ou un autre stratagème pour que les textes s'affichent correctement.
Si vous pensez que ça peut provenir du code du fichier htm, je peux vous donner la version utilisant le swfObject ou celui de DW.
En réalité, je ne sais pas si le problème vient du code AS3 ou du code HTML.
MERCI beaucoup pour votre aide.
Igone