Adaptation code > barre de navigation > sequences multiples

vassilisix Messages postés 10 Date d'inscription jeudi 10 février 2011 Statut Membre Dernière intervention 18 février 2011 - 16 févr. 2011 à 23:48
vassilisix Messages postés 10 Date d'inscription jeudi 10 février 2011 Statut Membre Dernière intervention 18 février 2011 - 18 févr. 2011 à 13:43
Bonjour à tous !

Je bidouille un diaporama flash avec pan/zoom sur les images, piste son, barre de navigation draggable, temps restant/écoulé. Au bout de 4 jours, j'ai finalement réussi à assembler qqchose d'honnête (en m'inspirant d'autres devs).

Ca fonctionne parfaitement dans un SWF indépendant. Mais quand j'importe ca comme "sequence2" dans un swf qui contient déjà une "séquence1", ca déconne complètement. J'ai réussi à bidouiller le Timer. Mais impossible d'adapter la barre de navigation pour fonctionner dans un SWF à séquences multiples. Voici le code de la barre, trouvé dans un tuto FLashkit. Vous avez des idées ?

this.onLoad = function() {
_global.played = "played";
_global.togle = false;
_global.origX = this.slide._x;
_global.origY = this.slide._y;
_global.draged = "no";
_global.factor = 840 ;
_global.percentage = factor/_root._totalframes;
this.lineclip._width = factor+this.slide._width;
this.lineclip._x = origX;
this.lineclip._y = origY+this.lineclip._height/4;
};

this.slide.onEnterFrame = function() {
if (draged<>"yes") {
this._x = Math.ceil((_root._currentframe*percentage)+origX-1);
} else {
_root.gotoAndStop(Math.floor((this._x-origX)/percentage)+1);
}
};

this.slide.onPress = function() {
_global.draged = "yes";
this.startDrag(false, origX, origY, origX+(factor*Math.ceil(_root._framesloaded/_root._totalframes)), origY);
};


this.slide.onRelease = function() {
_global.draged = "no";
stopDrag();
if (played == "played") {
_root.play();
_global.togle = false;
}
};

13 réponses

BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
16 févr. 2011 à 23:52
Hello,

oublie la construction d'un fichier en plusieurs séquences, ce n'est bon qu'à semer le trouble dans le fonctionnement de ton swf. Privilégie le chargement de swf externe(s) dans ton swf principal au détriment de l'import de séquence(s).

A plus ,

BBFUNK01
//C'est en forgeant qu'on devient forgeron... ;-) ;
0
vassilisix Messages postés 10 Date d'inscription jeudi 10 février 2011 Statut Membre Dernière intervention 18 février 2011
16 févr. 2011 à 23:57
Ben ouais j'avais déjà lu ca quelque part
sauf que dans ma stratégie de chargement, il vaut mieux que tout soit chargé dans le même swf...
Sans ca, les lecteurs devront attendre plusieurs fois, ca risque de les saouler ...

Y'a pas de solution à mon problème ?
0
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
17 févr. 2011 à 01:39
Re,

si : la solution c'est justement de charger des swf externes dans ton swf principal.
Par exemple : si ton swf en l'état contient 5 séquences, au lieu d'ajouter les 4 dernières séquences dans ton swf, pour chaque séquence tu crées un swf externe et tu les charges dans ton swf principal.
Une autre manière de faire serait de transformer tes séquences en clips, et à ce moment-là tu pourras conserver un seul fichier swf : tu n'auras plus qu'à afficher tes clips en faisant des attachMovie() par exemple.

Bref, il y a plusieurs façons de procéder, mais il faut garder à l'idée que si tu veux tout stocker dans un seul et même swf il faut éviter que ce swf ait un poids trop conséquent, car si tu as dans l'idée d'offrir à tes visiteurs tout le contenu rapidement... En admettant que ton swf pèse 10mo je pense qu'il n'attendront pas tous le chargement complet du swf pour quitter ton site. Donc le but c'est de trouver le juste milieu : tout stocker dans un seul swf si le poids n'est pas trop important / si le poids est trop important -> découper ton fichier en swf externes et les charger au fur et à mesure (rien ne t'empêche de les charger à la volée et de les afficher seulement lorsque le visiteur le souhaite).

A plus ,

BBFUNK01
//C'est en forgeant qu'on devient forgeron... ;-) ;
0
vassilisix Messages postés 10 Date d'inscription jeudi 10 février 2011 Statut Membre Dernière intervention 18 février 2011
17 févr. 2011 à 10:27
Intéressant tout ca :)

J'ai lu quelque part que Flash chargeait les contenus progressivement, qu'il ne chargeait jamais les 10mo d'une anim d'un coup. Qu'il commencait la lecture avant la fin du téléchargement. Ce que j'ai pu vérifier en faisait un petit test. DOnc finalement, que je transforme mes animations en clip, ou que je les laisse en SWF et que je les charge avant la fin de la lecture, ca ne change pas grand chose ... si ? Du coup j'ai bien envie de partie sur la technique "clip". Sauf que j'ignore comment transformer un SWF complexe en clip ...

Merci pour toutes ces réponses expertes BBfunk :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vassilisix Messages postés 10 Date d'inscription jeudi 10 février 2011 Statut Membre Dernière intervention 18 février 2011
17 févr. 2011 à 18:03
Triste nouvelle !
Quand je charge le diaporama en SWF externe via createEmptyMovieClip et loadMovie, j'ai le même problème. La barre de navigation du diaporama ne fonctionne plus. Je suis complètement pommé ... qu'est-ce qui cloche dans ce code (affiché plus haut) ?
0
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
17 févr. 2011 à 19:17
Hello,

la "technique clips" c'est envisageable et ça n'aura pas pour incidence que tu aies à modifier énormément ton code, par contre je persiste et signe : si ton .swf pèse plus de 2/3 mégas -> crées des swf externes ! 2/3 mégas ça ne paraît pas si gros que ça, mais pour les gens qui ont une connexion bas débit c'est énorme. Dans l'idéal un .swf doit faire au max quelques centaines de ko.
Pour alléger au max ton .swf il faut par exemple au mieux stocker les images en externe, quelles qu'elles soient, histoire de gagner quelques ko.
Et comme effectivement flash player charge et lit de façon asynchrone les .swf, moins tu lui donnes de données à charger d'un coup... Mieux c'est tout de même.

Pour en revenir à ton soucis de code : si le code n'est pas de toi, le mieux c'est encore de refaire toi-même de A à Z ton animation en t'en inspirant, et en essayant aau mieux de corriger ce qui est corrigeable dans le "modèle". Rafistoler des codes pêchés ici et là ça marche bien au début pour des trucs "fastoches", mais plus on va vers du complexe et moins c'est jouable -> le mieux je pense c'est que tu réfléchisses aux contraintes qui s'imposent et de repenser ton animation pour que ce soit fluide et sans bavure.
Juste un exemple -> ton code contient des "_root" à tout va... Pour jouer avec des swf externes ce sera la galère ! "_root" est réellement à bannir de ton code, sauf cas extrême.

Néanmoins je serai curieux de savoir combien pèse ton swf, s'il n'est pas trop lourd il n'y a peut-être pas de quoi tout remettre en question.

A plus ,

BBFUNK01
//C'est en forgeant qu'on devient forgeron... ;-) ;
0
vassilisix Messages postés 10 Date d'inscription jeudi 10 février 2011 Statut Membre Dernière intervention 18 février 2011
17 févr. 2011 à 19:33
héhé merci BBfunk de t'occuper de mes soucis :)

Pour être honnête, je n'ai pas le niveau pour tout recoder. Je mériterais une bonne formation ;-) Mais là j'ai un truc à rendre pour début mars. Le flasheur maison est chargé jusqu'au cou, c'est à moi d'assurer ...

En suivant tes conseils, je me suis résolu à scinder l'anim en 6 swf (accueil + 6 diaporamas). Je pensais que grâce à ça, le code de la barre de navigation cesserait de déconner. Mais en fait, il continue de déconner pareil. Manifestement, quand tu loadmovie un SWF depuis un autre swf, il ne se comporte pas comme si tu le lançais tout seul... Bref je suis dans la m ...

J'ai éliminé autant de roots que possible. Mais il en reste 3. Quant aux global, manifestement, je ne peux pas y toucher ... J'ai tenté de les remplacer par des this mais ca fout tout en l'air.

... des idées ?
0
vassilisix Messages postés 10 Date d'inscription jeudi 10 février 2011 Statut Membre Dernière intervention 18 février 2011
17 févr. 2011 à 19:45
Cool en fait j'ai réussi à enlever tous les Root
Et la plupart des Global ...
Il me reste plus que les global.draged
Si je les supprime ca déconne ...

Ca m'avance pas des masses ... je garde toujours mon problème de barre de navigation qui déconne ...

rhalala :)
0
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
17 févr. 2011 à 21:29
Re,

en fait il y a un truc pour transmettre des données, ou des instructions, du swf conteneur à des swf contenus -> LocalConnection().
LocalConnection() permet donc par exemple de transmettre une variable d'un swf à un autre, exemple : admettons que tu aies un swf principal qui contient un menu, si tu charges un swf externe qui contient un lecteur mp3 tu pourras alors grâce à LocalConnection() "piloter" le lecteur mp3 du swf chargé, et ce dans ton swf principal.
Je te laisse le soin de te documenter sur LocalConnection() pour voir si tu en auras l'utilité, mais comme tu charges des swf externes je pense que tu en auras besoin... Et m'est avis que ton problème de barre de navigation pourrait être solutionné grâce à ça.

A plus ,

BBFUNK01
//C'est en forgeant qu'on devient forgeron... ;-) ;
0
vassilisix Messages postés 10 Date d'inscription jeudi 10 février 2011 Statut Membre Dernière intervention 18 février 2011
17 févr. 2011 à 21:31
7 heures de recherche et j'ai enfin trouvé la solution ... j'ai fini par comprendre que c'était onload qui faisait déconner l'ensemble ... j'ai tenté de remplacer onload ... impossible ... et pis j'ai carrément eliminé onload pour que le code s'exécute sans être encapsulé dans une fonction ... et là miracle !
CA MARCHE !!!
argh flash je t'aime et je te déteste
0
vassilisix Messages postés 10 Date d'inscription jeudi 10 février 2011 Statut Membre Dernière intervention 18 février 2011
17 févr. 2011 à 21:32
merci pour tes idées et ton soutien :)
je me sens moins seul
0
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
17 févr. 2011 à 22:16
De rien ,

c'est le but de ce forum : filer un coup de main à ceux qui galèrent ou qui débutent, et les aider à progresser .

A plus et bon Flash ,

BBFUNK01
//C'est en forgeant qu'on devient forgeron... ;-) ;
0
vassilisix Messages postés 10 Date d'inscription jeudi 10 février 2011 Statut Membre Dernière intervention 18 février 2011
18 févr. 2011 à 13:43
Argh maintenant je n'arrive pas à me dépatouiller avec le chargement des SWF externes en visible = false .... J'ai posté un nouvel appel à l'aide :
http://www.flashkod.com/forum/sujet-PRELOAD-GT-GT-VISIBLE-FALSE-NE-MARCHE-PAS_1499705.aspx
Ca n'en finit plus !
0
Rejoignez-nous