AS3 : event.COMPLETE sur loader ne fonctionne pas

Résolu
Cybeber Messages postés 3 Date d'inscription samedi 13 octobre 2007 Statut Membre Dernière intervention 28 mars 2009 - 28 mars 2009 à 19:49
Cybeber Messages postés 3 Date d'inscription samedi 13 octobre 2007 Statut Membre Dernière intervention 28 mars 2009 - 28 mars 2009 à 20:54
Bonjour à tous,

Je consulte régulièrement ce forum et y trouve en général les réponses à mes problèmes, mais là, on dirait que je suis bien le premier à rencontrer celui là.

Mon index appelle plusieurs swf pour composer différent éléments du site. Pour assurer le chargement de certains éléments, je charge les images de la page d'accueil avec un écouteur sur le dernier loader pour appeler le reste des éléments du site :

ActionScript 3 :

function chargerSite(event:Event):void {
 
trace('Images chargées !');
 }
function chargerImg(aRub:Array):void {
    var nbElem:Number = new Number(aRub.length);
    var i:Number = new Number(0);
    for each(var elemRub:Array in aRub) {
        var urlSwf:URLRequest = new URLRequest('img/'+elemRub[2]);
         this['img'+elemRub[1]] = new Loader();
        this['img'+elemRub[1]].load(urlSwf);
        this['img'+elemRub[1]].name='img'+elemRub[1];
    }
    this['img'+elemRub[1]].addEventListener(Event.COMPLETE, chargerSite);
}

Pour information chargerImg est appelé par le parcerXML, lui même appelé par le chargerXML. Si j'ajoute un addChild, les éléments apparaissent bien sur la scène.
A noter que si je change l'écouteur pour "Event.ADDED", la fonction chargerSite se lance bien, mais je doute que ce soit la bonne méthode.
Du coup, je suis preneur de tous conseils ou explications.

3 réponses

Cybeber Messages postés 3 Date d'inscription samedi 13 octobre 2007 Statut Membre Dernière intervention 28 mars 2009
28 mars 2009 à 19:58
Mouiiii... Plus c'est bête, plus ça parait compliqué.
Ceux qui ont lu le sujet ont dû déjà déceler le problème :

this['img'+elemRub[1]].contentLoaderInfo.addEventListener(Event.COMPLETE, chargerSite);

Je reste toujours preneur d'explications sur le fonctionnement des events sur les loader, même si là ça me semble logique (le loader lui ne peut se terminer, en revanche, l'URLloader, qui lui doit charger l'image, s'achève bien un jour).

En tout cas, merci à ceux qui ont pris le temps de lire ma question.
3
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
28 mars 2009 à 20:42
Bonsoir,

Tu essayes d'adapter la méthode AS2 à l'AS3, or ça ne fonctionne plus.
Moi je te conseille de placer tes loaders dans un Array et de les appeller directement avec l'index de ce dernier.

C'est plus simple, tu ne te prend pas la tête à trouver des noms bizarres et en plus tu évites un écriture devenue lourde.

Peg'
3
Cybeber Messages postés 3 Date d'inscription samedi 13 octobre 2007 Statut Membre Dernière intervention 28 mars 2009
28 mars 2009 à 20:54
Euh, en fait, c'est plutôt une habitude php que d'utiliser des noms de variables dynamiques... Mais, j'ai lu à plusieurs reprises qu'en Flash ce n'était pas très propre comme méthode, or c'est quand même bien pratique.

Je vais tâcher de faire comme tu dis, avec un array, ça sera plus propre, plus facile à utiliser, et plus facile à tester et au moins, je pourrais en faire des variables globales sans connaitre leur nom.

Merci du conseil, je vais tester ça de ce pas.
0
Rejoignez-nous