Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1378 connectés 

  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  [Flash] LoadMovie é Co

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Flash] LoadMovie é Co

n°1195663
Giansolo
ben ... rien....
Posté le 09-09-2005 à 01:30:08  profilanswer
 

Salut tout le monde,
Alors les loadMovies pour moi c'est l'enfer, et plein de monde pose des questions... j'esperais trouver la réponse dors-et-déjà sur le forum, mais sot que je suis, je me suis trompé :-)
 
j'ai donc un petit problème avec LoadMovie, en fait je vous explique la hiérarchie, j'ai une anim principale qui charge d'autres anims. jusque la ca baigne. J'aimerais par exemple que quand je clique sur un bouton dans le clip principal, ca me charge une autre anim (.swf).
 
j'ai tenté le code suivant :
 

Code :
  1. loadMovie ("mvt1.swf",50);
  2. loadMovie ("mvt2.swf",49);
  3. _level50.play();
  4. if(_level50.mvt2_play)
  5. {
  6. _level49.play();
  7. }


 
malheureusement, jai l'impression que les 2 anims se jouent en meme temps!!!
pourtant la variable mvt2_play dans le clip mvt1.swf est initialisée à fausse et passée a vrai sous certaines conditions (qui sont vérifées).
Donc je suppose que je me gourre fortement dans les LoadMovie, mais ou?
 
tiendez moi au courant les gens!
merci par avance!!
et bonne nuit tout le monde :sleep:  
Gian

mood
Publicité
Posté le 09-09-2005 à 01:30:08  profilanswer
 

n°1195722
mechkurt
Posté le 09-09-2005 à 09:38:15  profilanswer
 

mais un trace(this) dans mvt1.swf et regarde ce qui sort quand tu le load dans ton anim pincipale, je suis pas sur que ce soit: _level50


---------------
D3
n°1195797
Giansolo
ben ... rien....
Posté le 09-09-2005 à 11:18:31  profilanswer
 

re,
merci de ta réponse,
mais pour tout ce qui est débuggage avec trace(), chez moi, je ne sais pas si ca bug ou quoi que ce soit, mais dans "Output" je n'ai jamais rien d'affiché, et je suis obligé de regarder les vars dans Debug > List Variables et Debug > List Objects.
en général je me contente de ca et ca marche.
mais la je peux pas te répondre... trace() ca trace que dalle chez moi :-)

n°1195806
Giansolo
ben ... rien....
Posté le 09-09-2005 à 11:23:20  profilanswer
 

et oui, je confirme, je vois bien les 2 anims qui se jouent en meme temps, si j'inverse les levels c pareil (sauf que les calques ne sont plus au meme niveaux bien sur)

n°1195815
mechkurt
Posté le 09-09-2005 à 11:30:22  profilanswer
 

je suppose que tu as pensé a mettre des stop(); dans les anims que tu importe (je demande au cas ou...)
le trace qui passe pas c'est du jamais vu, moi je serais complétement paumé sans trace ;-)
tu voudrait pas charger tes anims dans des MC ce serait plus propre non?

Code :
  1. _root.creatEmptyMovieCLip("anim1_mc",50);
  2. _root.anim1_mc.loadMovie("mvt1.swf" );
  3. _root.creatEmptyMovieCLip("anim2_mc",49);
  4. _root.anim2_mc.loadMovie("mvt2.swf" );


---------------
D3
n°1195829
Giansolo
ben ... rien....
Posté le 09-09-2005 à 11:39:16  profilanswer
 

Oui je sais, le trace() c du jamais vu, mais chez moi j'ai déjà vu des tas de trucs extraordinaires (le gestion de mon fond d'écran à disparu (à cause de CWS je pense), il faut désactiver et réactiver certains protocoles (dont le client Novell) dans un certain ordre pour pouvoir jouer en IPX, et des tas de trucs comme ca. Et pourtant a prioris ma version de windows XP est super stable...). Mais passons, la n'est pas le sujet.
Moi aussi je suis paumé sans trace()... Alors je me démerde sans.
 
J'ai bien mis des stop(); un peu partout comme je le souhaitais. Donc je ne sais pas trop quoi faire en fait...
Je vais essayer ta suggestion, voir ce que ca donne!
merci!

n°1195841
Giansolo
ben ... rien....
Posté le 09-09-2005 à 11:47:12  profilanswer
 

la je suis certainement une grosse quiche, mais y a rien qui s'affiche chez moi avec le code que tu m'as filé... faut-il que je rajoute quelque chose? un _visible? ou un truc du genre ? ou je que spécifie une taille ?
moi pas comprendre!

n°1195921
mechkurt
Posté le 09-09-2005 à 13:53:31  profilanswer
 

normalement non:
http://livedocs.macromedia.com/fla [...] _ASLR.html
t'as Flash MX 2004 et tu publie en flashplayer 7 actionscript 2 ?
jvois pas bien ce qu'on peut essayer...
 
le reste de ton anim est chargé ?
(auquel cas, essaye dans un nouveau document)
 
sans trace() il m'est assez difficile de t'aider...
je peut peut etre telecharger ton .fla depuis quelque part pour voir ce que ca fait chez moi...


---------------
D3
n°1196174
Giansolo
ben ... rien....
Posté le 09-09-2005 à 18:02:54  profilanswer
 

je suis sous FlashMX 2004 et je publie en flash7 je crois  AS2 je ne sais pas.
 
je t'envois un mp pour que tu jetes un oeil au .FLA
merci!
gian

n°1196265
mechkurt
Posté le 09-09-2005 à 20:50:33  profilanswer
 

alors deja (et c'est de ma faute a tjrs taper de memoire sans faire gaffe a la casse..):
 

Code :
  1. _root.createEmptyMovieClip("anim1_mc", 50);
  2. _root.anim1_mc.loadMovie("mvt1.swf" );


 
le PB c'est que tant que l'anim serat pas chargé complétement _root.anim1_mc.stop(); ne sert a rien
 
du coups tu devrait voir du cote des MovieCLiploader:
http://livedocs.macromedia.com/fla [...] _ASLR.html
 

Code :
  1. _root.createEmptyMovieClip("anim1_mc", 50);
  2. var mclListener:Object = new Object();
  3. mclListener.onLoadProgress = function(target_mc:MovieClip, bytesLoaded:Number, bytesTotal:Number) {
  4.    partchargee = Math.round(bytesLoaded/bytesTotal*100);
  5. };
  6. mclListener.onLoadInit = function(target_mc:MovieClip) {
  7.    target_mc.gotoAndStop(1);
  8. };
  9. var anim_mcl:MovieClipLoader = new MovieClipLoader();
  10. anim_mcl.addListener(mclListener);
  11. anim_mcl.loadClip("anim1.swf", anim1_mc);


 
je te laisse essayer de ce cote la pendant le week-end ;-)


---------------
D3
mood
Publicité
Posté le 09-09-2005 à 20:50:33  profilanswer
 

n°1196296
Giansolo
ben ... rien....
Posté le 09-09-2005 à 22:23:17  profilanswer
 

oki merci beaucoup je vais tenter tout ca :-)

n°1196502
Giansolo
ben ... rien....
Posté le 10-09-2005 à 13:29:35  profilanswer
 

Bon, je m'y suis mis avec les MCL et ca marche correctement... voici le code (merci l'aide de FLash) :
 

Code :
  1. this.createEmptyMovieClip("progressBar_mc", 0);
  2. progressBar_mc.createEmptyMovieClip("bar_mc", 1);
  3. progressBar_mc.createEmptyMovieClip("stroke_mc", 2);
  4. with (progressBar_mc.stroke_mc) {
  5. [blabla....]
  6. }
  7. with (progressBar_mc.bar_mc) {
  8. [blabla...]
  9. }
  10. var mclListener:Object = new Object();
  11. mclListener.onLoadStart = function(target_mc:MovieClip) {
  12.    progressBar_mc.bar_mc._xscale = 0;
  13. };
  14. mclListener.onLoadProgress = function(target_mc:MovieClip, bytesLoaded:Number, bytesTotal:Number) {
  15.    progressBar_mc.bar_mc._xscale = Math.round(bytesLoaded/bytesTotal*100);
  16. };
  17. mclListener.onLoadComplete = function(target_mc:MovieClip) {
  18.    progressBar_mc.removeMovieClip();
  19.    gotoAndStop(2);
  20. };
  21. mclListener.onLoadInit = function(target_mc:MovieClip) {
  22. };
  23. this.createEmptyMovieClip("mvt1_mc", 100);
  24. var mvt_mcl:MovieClipLoader = new MovieClipLoader();
  25. mvt_mcl.addListener(mclListener);
  26. mvt_mcl.loadClip("mvt1.swf", mvt1_mc);


 
je n'ai posté que les grandes lignes. ca marche bien.
 
Maintenant le fait que j'utilise un MCL pour charger un clip, change la hiérarchie. Donc j'ai du enlever les _root que j'avais dans le clip chargé sinon ah bah marche plus.
mais j'ai un autre problème, je faisait un appel _root.gotoAndStop(26) dans un bouton dans un clip contenu dans le clip qui est chargé par le MCL ... compliqué non ?
Je vous fait un petit schéma :
 
MCListener-->MCLoader ("mvt1_mc" charge donc mvt1.swf)
                                        |-->dans mvt1.swf (*1) : un mc_  
                                                          |-->dans ce mc_anciennement _root.gotoAndPlay(x);
 
ma question est, que dois-je mettre a la place du _root. pour pouvoir faire un gotoAndPlay(x) dans le clip "mvt1.swf". Je précise bien que ce gotoAndPlay est géré par le sousclip et non pas par le superclip qui utilise le MCLoader. En fait je veux revenir a la "racine" du sous-clip (*1).  
 
Voila, j'espere que j'ai été clair, sinon n'hesitez pas à me demander les gens!
bon we!
gian

n°1196708
mechkurt
Posté le 10-09-2005 à 18:59:02  profilanswer
 

euh!
la encore dommage que t'est pas trace !
resumons: tu veut que le timeline principal de mvt1.swf aille lire a partir de la frame 26, ceci commandé par un bouton situé a l'interieur de celle ci...
-> peut etre que _root.mvt1_mc.gotoAndPlay(26); fonctionne (logiquement ca devrait ;-) )


---------------
D3
n°1196982
Giansolo
ben ... rien....
Posté le 11-09-2005 à 13:07:38  profilanswer
 

oui ca semble fonctionner! (en tout cas pour l'animation ca marche).
la j'ai un autre probleme (décidemment), sans doute de portabilité de variables...
Je m'explique, je fais des mouvements de caméras entre 2 keyframes, ou apparait un MC avec des boutons dedans. Quand je me cantonne à un mouvement aller - retour ca marche bien. mais quand je cherche à faire aller la caméra 2 fois plus loin, je peux y aller, mais je peux revenir qu'une fois... la je comprends pas tout...
je vais poster le code ce sera sans doute plus simple :
 
[Frame 25] :

Code :
  1. stop();
  2. ________________Dans le MC, boutton :
  3. on(release)
  4. {
  5. _root.mvt1_mc.exit=false;
  6. _root.mvt1_mc.gotoAndPlay(26);
  7. }


 
[frame 26->58] :

Code :
  1. onEnterFrame = function() {
  2.     if (!exit && _currentframe<58) {
  3.         nextFrame();
  4.     }
  5. else if (exit && _currentframe>25)
  6. {
  7.        prevFrame();
  8.     }
  9. }


 
[frame 59] !

Code :
  1. stop();
  2. ________________Dans le MC, boutton "Droite":
  3. on(release)
  4. {
  5. _root.mvt1_mc.exit=true;
  6. _root.mvt1_mc.prevFrame();
  7. }
  8. ________________Dans le MC, boutton "Gauche":
  9. on(release)
  10. {
  11. _root.mvt1_mc.exit=false;
  12. _root.mvt1_mc.gotoAndPlay(59);
  13. }


 
j'ai le meme code sur pratiquement tout le reste de l'anim, mis à part pour les frames dont le numéro change, bien évidemment.
Quand je reste entre les frames 25->59, pas de problemes, je peux faire des aller retours ca marche d'enfer.
mais par exemple quand je vais plus loin, 25->59->91 et que je reviens 91->59->fait juste 1 seul PrevFrame()! et tout stop.
 
Sachant que cette animations, est sous-classée par rapport à une super animation.
La sans trace() je galère, impossible de débugger...
une suggestion sir mechkurt? (vu que tu es le seul à répondre!)
merci!
et bon WE,
gian

n°1197039
mechkurt
Posté le 11-09-2005 à 14:14:17  profilanswer
 

c'est toujours un peu difficile de rentrer dans le code de qq'un sans l'avoir sous les yeux...
 
deja je trouve qu'il y a doublon entre ca:

Code :
  1. _root.mvt1_mc.gotoAndPlay(26);


et ca:

Code :
  1. if (!exit && _currentframe<58) { 
  2.         nextFrame();       
  3. }


logiquement, non seulement il lit l'animation frame apres frame, mais en plus a chaque fois il saute a la frame suivante
 
alors soit tu fait confiance a ton code onEnterFrame et tu fait:

Code :
  1. _root.mvt1_mc.gotoAndStop(26);


soit tu allege ton onEnterFrame de la partie "lecture dans le bon sens"
Je ne suis pas sur que le PB viennent de la quoique ca expliquerait qu'il fonctionne dans quand il lit a l'endroit mais pas quand il lit a rebours...
 
A part ca il ne peut y avoir qu'un seul onEnterFrame par clip, donc a chaque fois que tu declare:

Code :
  1. onEnterFrame = function() { 
  2.      if (!exit && _currentframe<58) { 
  3.          nextFrame();       
  4.      } else if (exit && _currentframe>25)  { 
  5.          prevFrame();                       
  6.      }
  7. }


c'est comme si tu declarais:

Code :
  1. _root.mvt1_mc.onEnterFrame = function() { 
  2.      if (!_root.mvt1_mc.exit && _root.mvt1_mc._currentframe<58) { 
  3.          _root.mvt1_mc.nextFrame();       
  4.      } else if (_root.mvt1_mc.exit && _root.mvt1_mc._currentframe>25)  { 
  5.          _root.mvt1_mc.prevFrame();                       
  6.      }
  7. }


le code compris entre la frame 60 et 90 ecrasant celui qui a été déclaré entre la frame 26 et 58
 
bonne chance
PS: je t'ai dit que je trouvais ton anim tres joli et tres lourde ;-)


---------------
D3
n°1197050
Giansolo
ben ... rien....
Posté le 11-09-2005 à 14:22:04  profilanswer
 

ouaip je sais! :-)  mais pour l'instant c du test je supprimerais ptet un calque ou 2 qui bouffent pas mal (les ombres notemment).
je vais essayer de voir avec ton code hector :-)

n°1201847
Giansolo
ben ... rien....
Posté le 18-09-2005 à 15:18:17  profilanswer
 

Bon et bien ca marche bien, j'arrive a piloter l'anim comme je veux.
 
Maintenant je suis passé au chargement des fichiers via le MCL comme d'hab, et la grosse surprise, il charge 2% et il lance l'animation. C'est la fête!  :D  
 
j'ai comme l'impression qu'il compare la taille de la "super" animation a celle qui est chargée par le MCL :
anim mvt1 = 12 Mo
superanim = 26 ko
 
La superanim represente environ 2% de mvt1...... donc surprise surprise.
 
voici le code :
 

Code :
  1. this.createEmptyMovieClip("mvt1_mc", 1);
  2. var mclListener:Object = new Object();
  3. mclListener.onLoadInit = function(mvt1_mc:MovieClip) {
  4. };
  5. mclListener.onLoadStart = function(mvt1_mc:MovieClip) {
  6.         preloader._visible = true;
  7.         preloader.loadBarFull._width=0;
  8. };
  9. mclListener.onLoadProgress = function(clip, w, t) {
  10.         var w = clip.getBytesLoaded();
  11.         var t = clip.getBytesTotal();
  12.  preloader.loadBarFull._width=Math.round(w*200/t)
  13.         preloader.percent.text = Math.round(w/t*100);
  14. };
  15. mclListener.onLoadComplete = function(mvt1_mc:MovieClip) {
  16.         preloader._visible = false;
  17.         preloader.percent.text = "";
  18. };
  19. mclListener.onLoadError = function(mvt1_mc:MovieClip, errorCode:String) {
  20.         preloader._visible = false;
  21.         preloader.percent.text = "";
  22. };
  23. var myLoader:MovieClipLoader = new MovieClipLoader();
  24. myLoader.addListener(mclListener);
  25. myLoader.loadClip("mvt1.swf",mvt1_mc);


 
je galere la dessus depuis 2 jours, impossible d'avancer...
merci a tout ceux qui peuvent me filer un coup de main!
gian

n°1202056
mechkurt
Posté le 19-09-2005 à 08:47:40  profilanswer
 

t'as essayé de mettre un clip.gotoAndStop(1); (dans loadstart par exemple)
ou plus simplement un stop(); sur le premiere frame de ton anim de 12 mega


---------------
D3
n°1202247
Giansolo
ben ... rien....
Posté le 19-09-2005 à 11:33:49  profilanswer
 

euh ... non,
je pensais que la lecture s'effectue qu'a partir du moment ou on rentre dans le init ou Complete...
vais essayer ca right now!
merci mercure

n°1202251
Giansolo
ben ... rien....
Posté le 19-09-2005 à 11:35:59  profilanswer
 

autant pour moi!!
ca marche parfaitement comme ca!
merci meche kurt cobain

n°1202252
mechkurt
Posté le 19-09-2005 à 11:36:46  profilanswer
 

a vrai dire j'en sais rien mais d'une certaine facon il stream peut etre l'anim, les frame chargé étant affiché...


---------------
D3
n°1202640
Giansolo
ben ... rien....
Posté le 19-09-2005 à 17:18:09  profilanswer
 

ok merci quand meme :)
 
As-tu une idée de la meilleur facon de charger plusieurs clips avec un seul listener ?
Car dans une seule et meme frame, la barre de chargement lit les 2 fichiers en meme temps, donc, comment faire un chargement de fichiers séquentiel?  
 
J'ai pensé a les séparer avec des keyframes, ou à charger le MCL du 2eme dans le onLoadComplete() du premier :
dans ce style la :
 

Code :
  1. mclListener.onLoadComplete = function(mvt1_mc:MovieClip) {
  2.         myLoader.loadClip("mvt2.swf",mvt2_mc);
  3. };


 
mais je trouve que ca fait un peu bordélique.
De plus quand je lance le truc ca marche mais j'ai un message qui s'affiche au bout de plusieurs secondes me disant que mon script ralentit l'animation! hem...
ce qui me fait penser qu'il y a une bien meilleur méthode pour tout ca.
J'ai parcouru les sites web (notamment Kirupa) mais j'ai pas trouvé d'exemple qui tue. Sur le site de Flash, ils balancent leur sauce joyeusement avec 3/4 MCL, mais si je fais pareil ca lit tout simultanément...
 
merci!
gian

n°1202668
mechkurt
Posté le 19-09-2005 à 17:43:37  profilanswer
 

ca parait effectivement un peu barbare...
met plutôt une condition, je te donne des pistes:

Code :
  1. trucacharger = new Array("mvt1.swf","mvt2.swf" );
  2. numero=0;
  3. _root.onEnterFrame = function () {
  4.    if (charge) {
  5.       if (numero>trucacharger.length) {
  6.          //tous les chargements sont finis je passe a autre chose
  7.          //et surtout je supprime le_root.onEnterFrame qui ne sert plus a rien
  8.          delete _root.onEnterFrame;
  9.       } else {
  10.          //je charge le prochain truc sur la liste
  11.          myLoader.loadClip(trucacharger[numero],icilenomd'unnouveaumovieclip);
  12.       }
  13.    }
  14. }
  15. mclListener.onLoadComplete = function() {
  16.      charge=true;
  17.      numero++;
  18. };


---------------
D3
n°1202685
Giansolo
ben ... rien....
Posté le 19-09-2005 à 17:56:20  profilanswer
 

ok merci,
je vois le truc, ca devrait marcher sans problemes.

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  [Flash] LoadMovie é Co

 

Sujets relatifs
probleme de loader par loadmovie - flash mx 2004[flash] texte fixe avec barre de défilement
[Flash-Newbie] Ajout du numéro de slide dans une presentation Flash[Flash/ActionScript] Lier deux boutons
[Flash/ActionScript] Supprimer les lignes crées avec ASProp. flash pour fonction javascript TGetProperty() et TSetProperty()
Soundshake recrute des développeurs Flash bénévoles sur Paris[Flash] newbie vs Events de List
[RESOLU]XML et flash -> je trouve pas l'erreur 
Plus de sujets relatifs à : [Flash] LoadMovie é Co


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR