Problème de ciblage tout bête avec un listener as2

Signaler
Messages postés
9
Date d'inscription
vendredi 27 mai 2005
Statut
Membre
Dernière intervention
1 avril 2010
-
Messages postés
6
Date d'inscription
vendredi 16 juin 2006
Statut
Membre
Dernière intervention
23 septembre 2009
-
Bonjour,

J'ai crée un système de listeners pour un preload multiple avec moviecliploader mais je me retrouve face à un problème tout bête avec mon target de listener.

listener1 = new Object();
listener1.onLoadProgress = function(mc1, bl1, bt1):Void {
//trace(mc1 + ".onLoadProgress with " + bl1 + " bytes of " + bt1);
pourcent1 = Math.round(100*bl1/bt1);
trace(pourcent1);
};

si mon clip mc1 est placé à la racine pas de soucis.
Mais si mon clip mc1 est placé à l'intérieur d'un clip je n'arrive pas à le cibler comme ceci :

listener1 = new Object();
listener1.onLoadProgress = function( _root.clip.mc1 , bl1, bt1):Void {
//trace(_root.clip.mc1 + ".onLoadProgress with " + bl1 + " bytes of " + bt1);
pourcent1 = Math.round(100*bl1/bt1);
trace(pourcent1);
};

flash m'indique une erreur de syntaxe.

comment contourner ce problème ?

5 réponses

Messages postés
6
Date d'inscription
vendredi 16 juin 2006
Statut
Membre
Dernière intervention
23 septembre 2009

Salut,

Personnellement j'aurais fait comme cela :

var listener1:Object = new Object();
listener1.onProgress = function(file:FileReference, bytesLoaded:Number, bytesTotal:Number):Void {

//trace(mc1 + ".onLoadProgress with " + bytesLoaded + " bytes of " + bytesTotal);
pourcent1 = Math.round(100*bytesLoaded/bytesTotal);
trace(pourcent1);
}

_root.clip.mc1.addListener(listener1);



Dis moi si ça t'as aidé ...

Ps : tu peux toujours mettre ton code directement dans la frame de ton mc1 que tu appel directement au cas où.

++

Alx.
Messages postés
9
Date d'inscription
vendredi 27 mai 2005
Statut
Membre
Dernière intervention
1 avril 2010

C'était plus simple que ça, je devais mettre le chemin dans le loadclip, et pas dans le listener qui ne prend que des variables.
Mon multi preload marche super.

Mais maintenant j'ai un nouveau probleme, je n'arrive pas à naviguer avec des gotoAndstop à l'intérieur du clip chargé grace au listenner, et ce même si j'utilise le loadinit pour être sûr qu'il est bien chargé (j'ai lu qu'il fallait faire ça en cherchant sur google)

exemple :

listener1.onLoadInit = function(animpause1) {
//une fois mon loading réalisé je regarde ou se trouve mon anim :
trace(animpause1+".onLoadInit");
//le trace m'affiche ça, donc ça marche : _level0.pause1.animpause1.onLoadInit
//j'essaie d'interagir avec le clip chargé :
_root.pause1.animpause1.gotoAndStop(1);
_root.pause1.animpause1._visible = 1;
//et là le gotoAndStop marche pas, mais le _visible oui si il est sur 0...
};
Messages postés
6
Date d'inscription
vendredi 16 juin 2006
Statut
Membre
Dernière intervention
23 septembre 2009

Salut,

Ben je connaissais pas mais en regardant sur notre amis Google j'ai trouver ça :

tellTarget ("_root.pause1.animpause1" ) { gotoAndPlay(1); }

Ca marche ?


++

Alx.
Messages postés
9
Date d'inscription
vendredi 27 mai 2005
Statut
Membre
Dernière intervention
1 avril 2010

merci de ta réponse, mais non ça ne fonctionne pas :/ c'est incroyable qu'un truc si simple ne arche pas, et que je ne trouve aucune info sur google !

je joins le code entier simplifié pour plus de clarté, donc pour rappel, mon animation apelle 4 swf externe via MovieClipLoader, puis j'essaie d'intéragir avec ces animation via un gotoAndStop :

url1 = "test.swf";
url2 = "test2.swf";
url3 = "test3.swf";
url4 = "test4.swf";

listener1 = new Object();
listener1.onLoadProgress = function(animpause1, bl1, bt1) {
//trace(animpause1 + ".onLoadProgress with " + bl1 + " bytes of " + bt1);
pourcent1 = Math.round(100*bl1/bt1);
percent = "animation n°1 : "+pourcent1+"%";
trace(pourcent1);
};
listener1.onLoadInit = function(animpause1:MovieClip) {
trace(animpause1+".onLoadInit");
};
listener2 = new Object();
listener2.onLoadProgress = function(animpause2, bl2, bt2) {
//trace(animpause2 + ".onLoadProgress with " + bl2 + " bytes of " + bt2);
pourcent2 = Math.round(100*bl2/bt2);
trace(pourcent2);
percent2 = "animation n°3 : "+pourcent2+"%";
};
listener2.onLoadInit = function(animpause2:MovieClip) {
trace(animpause2+".onLoadInit");
};
listener3 = new Object();
listener3.onLoadProgress = function(animpause3, bl3, bt3) {
//trace(animpause3 + ".onLoadProgress with " + bl2 + " bytes of " + bt2);
pourcent3 = Math.round(100*bl3/bt3);
trace(pourcent3);
percent3 = "animation n°3 : "+pourcent3+"%";
};
listener3.onLoadInit = function(animpause3:MovieClip) {
trace(animpause3+".onLoadInit");
};
listener4 = new Object();
listener4.onLoadProgress = function(animpause4, bl4, bt4) {
//trace(animpause4 + ".onLoadProgress with " + bl2 + " bytes of " + bt2);
pourcent4 = Math.round(100*bl4/bt4);
trace(pourcent4);
percent4 = "animation n°4 : "+pourcent4+"%";
};
listener4.onLoadInit = function(animpause4:MovieClip) {
trace(animpause4+".onLoadInit");
};

mcl1 = new MovieClipLoader();
mcl1.addListener(listener1);
mcl1.loadClip(url1,_root.pause1.animpause);
mcl2 = new MovieClipLoader();
mcl2.addListener(listener2);
mcl2.loadClip(url2,_root.pause2.animpause);
mcl3 = new MovieClipLoader();
mcl3.addListener(listener3);
mcl3.loadClip(url3,_root.pause3.animpause);
mcl4 = new MovieClipLoader();
mcl4.addListener(listener4);
mcl4.loadClip(url4,_root.pause4.animpause);
trace("une action à "+heures+" H "+minutes);
_root.onEnterFrame = function() {
if (pourcent1 100 && pourcent2 100 && pourcent3 == 100 && pourcent4 == 100) {
trace("mc1 mc2 mc3 mc4 chargé!");
delete this.onEnterFrame;
_root.gotoAndStop(2);
}
};


pause1.onRollOver = function() {
_root.pause1.animpause.gotoAndStop(2);
_root.pause1.animpause._alpha=(50);
trace("rolloverpause1");
};
pause2.onRollOver = function() {
_root.pause2.animpause.gotoAndStop(2);
_root.pause2.animpause._alpha=(50);
trace("rolloverpause2");
};
pause3.onRollOver = function() {
_root.pause3.animpause.gotoAndStop(2);
_root.pause3.animpause._alpha=(50);
trace("rolloverpause3");
};
pause4.onRollOver = function() {
_root.pause4.animpause.gotoAndStop(2);
_root.pause4.animpause._alpha=(50);
trace("rolloverpause4");
};
Messages postés
6
Date d'inscription
vendredi 16 juin 2006
Statut
Membre
Dernière intervention
23 septembre 2009

je crois avoir compris...
Quand tu agit sur ton clip _root.pause.animpause tu n'agis pas sur ton swf chargé directement mais sur ton conteneur (_root.pause.animpause)qui lui n'as qu'une frame dans sa séquence. Ce qui fait que ton alpha ou _visible va marché mais pas ton gotoAndPlay.
Après comme faire je ne suis pas sur...
Essaye de regaurder le nom de la séquence et de le rajouter ensuite :
_root.pause.animpause.nomdetaSequence