MovieClip, appel de fonctions, nombre de conteneurs, ...

MovieClip, appel de fonctions, nombre de conteneurs, ... - Flash/ActionScript - Programmation

Marsh Posté le 18-06-2008 à 14:54:37    

Bonjour,
 
J'ai une animation dans laquelle je charge plusieurs animations en me basant sur ce tuto ci.
Je procède comme suit :

Code :
  1. var clipLogo:MovieClip = this.createEmptyMovieClip("Logo", 2);
  2. var clipPerso1:MovieClip = this.createEmptyMovieClip("Joueur1", 3);
  3. var clipPerso2:MovieClip = this.createEmptyMovieClip("Joueur2", 4);
  4. var mcl:MovieClipLoader = new MovieClipLoader(); //gestionnaire du chargement
  5. var ecouteurChargement:Object = new Object();
  6. ecouteurChargement.onLoadStart = function(target:MovieClip):Void { trace("start" ); };
  7. ecouteurChargement.onLoadProgress = function(target:MovieClip, loaded:Number, total:Number):Void { trace("progress" ); };
  8. ecouteurChargement.onLoadComplete = function(target:MovieClip):Void { trace("complete" ); };
  9. ecouteurChargement.onLoadInit = function(target:MovieClip):Void {
  10. ...
  11. clipPerso1.gotoAndPlay("etiquette" ); // mouvement défenseur
  12. var strResAttack:string=ManageLife(perso2,perso1,1);
  13. ...
  14. };
  15. ecouteurChargement.onLoadError = function(target:MovieClip, code:String):Void { trace("erreur" ); }
  16. mcl.addListener(ecouteurChargement);
  17. var perso1:Player=new Player();
  18. var perso2:Player=new Player();
  19. var nom:String=perso1.NamePerso;
  20. var nom2:String=perso2.NamePerso;
  21. mcl.loadClip("logoArena.jpg", clipLogo);
  22. mcl.loadClip(nom + ".swf", clipPerso1);
  23. mcl.loadClip(nom2 + ".swf", clipPerso2);


 
Les fonctions appelées dans le onLoadInit sont appelées autant de fois qu'il y a de conteneurs. :(
 
Dans mon cas, si je veux changer une valeur une seule fois, elle le sera trois fois.
 
Quelqu'un saurait comment faire pour mieux gérer mon cas ?
 
Merci :)

Reply

Marsh Posté le 18-06-2008 à 14:54:37   

Reply

Marsh Posté le 18-06-2008 à 15:23:42    

A vue de nez je dirai que tu utilises le meme MCLoader pour tous
Sauf que dans le onLoadInit tu passe clipPerso1.gotoandPlay (1)
 
Donc a chaque chargement il jouera ca....
 
Passe donc 1 loader par clip ;)


---------------
Mon Topik  -- Mon feed
Reply

Marsh Posté le 18-06-2008 à 15:30:20    

Mav_69 a écrit :

A vue de nez je dirai que tu utilises le meme MCLoader pour tous
Sauf que dans le onLoadInit tu passe clipPerso1.gotoandPlay (1)

 

Donc a chaque chargement il jouera ca....

 

Passe donc 1 loader par clip ;)


Je voulais justement éviter de passer par ca, car il faudra que je mettes un "écouteur" pour chaque clip, et entrer dans le onLoadInit qu'une fois tous les clips chargés. Or je ne voyais pas comment dire à onLoadInit d'attendre tous les autres clips


Message édité par shaftbis le 18-06-2008 à 15:32:33
Reply

Marsh Posté le 18-06-2008 à 15:41:09    

Dans ce cas faut passer par un API de MassLoad... le seul que je connaisse a l'heure actuelle est en AS3, de thecaptain.
 
Sinon tu peux feinter... mais ca fait lourdeau ...
 

Code :
  1. var nbrClip:Number = 0 // tu init une variable a 0
  2. // Tu te fait tes ecouteurs pour tout tes clips
  3. // Dans chaque onLoadInit tu mettra
  4. nbrClip++;
  5. // de facon a ce qu'a chaque fin de chargement il s'incremente
  6. // ensuite tu te fais une fonction qui va regarder ce numero
  7. // soit avec un onEnterFrame, soit avec un setInterval
  8. function checkClip()
  9. {
  10. if(nbrClip == 3) // 3 etant le nombre de clip au total
  11. {
  12.   delete this.onEnterFrame;
  13.    clipPerso1.gotoAndPlay("etiquette" ); // mouvement défenseur
  14.    var strResAttack:string=ManageLife(perso2,perso1,1);
  15. }
  16. }
  17. this.onEnterFrame = function(){ checkClip(); }


---------------
Mon Topik  -- Mon feed
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed