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

  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  Affichage Loader et bouclage d'animation

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Affichage Loader et bouclage d'animation

n°1948337
r@phblues
Globe-trotter biologique
Posté le 08-12-2009 à 13:07:07  profilanswer
 

Bonjour,
 
J'ai 2 problèmes avec mon animation sur laquelle j'ai une photo qui défile et qui doit boucler. Un peu nul en ActionScript, je me prend la tête depuis plusieurs heures dessus dans trouver de solution valable.  
1. Mon loader n'affiche pas le % dans le texte dynamique appelé "pourcent"
2. Pour faire boucler mon animation flash, j'ai mis sur la dernière image clé "gotoAndStop(2);" (normalement c'est gotoAndPlay(2); mais j'ai mis Stop pour debug). Or quand j'exporte mon anim, il retourne à l'image 1 à la dernière image...  :sweat:  
 
La source fla est ici. http://alpha.charade-concept.fr/flash/Bandeau05.fla
 
 :hello:


---------------
Tibet libre !
mood
Publicité
Posté le 08-12-2009 à 13:07:07  profilanswer
 

n°1948485
abais
Posté le 08-12-2009 à 16:57:26  profilanswer
 

Normal, il faut que tu comprenne que l'execution du script est syncrone à la cadence d'image, ce que j'entend par là, c'est que, sauf evenement contraire, Flash exécutera ton script qu'une seule fois, et le repetera QUE si il est amener à REvenir sur ton image clé qui contient le code...
Par ailleurs, tu n'as pas mis de stop(); sur la premiere image clé qui stop l'animation (jusqu'à que le chargement soit fini)...

 

Il faut donc que tu arrête la tête de lecture sur cette image, et qu'à chaque frame (25 fois par seconde donc..) il rééxecute le script qui calcule le pourcentage chargé..., puis verifié si celui-ci est égale à 100, auquel cas, il passe à la suite !

 

En script (actionscript 2), ça donne :

 
Code :
  1. stop();
  2.  
  3. var pcharger:Number;
  4. var ptotal:Number;
  5. var rapport:Number;
  6.  
  7. this.onEnterFrame = function(){
  8.     pcharger = this.getBytesLoaded();
  9.     ptotal = this.getBytesTotal();
  10.     rapport = pcharger / ptotal;
  11.     pourcent.text = Math.ceil(rapport * 100) + ' %';
  12.  
  13.     if (Math.ceil(rapport * 100) == 100){
  14.         delete this.onEnterFrame;
  15.         gotoAndPlay(2);
  16.     }
  17. }


(Double cliquer sur le cadre de code pour retirer les n° de ligne qui s'imprègne au copié/collé)
Certaines lignes peuvent paraitre superflux, comme les "var", mais c'est indispensable en terme de propreté de code...
En effet, ça dit à flash "je crée une variable, ce sera un nombre..."
ça évite de prendre inutilement des ressources CPU pour flash, dédiées à "deviner intelligemment" qui est quoi...


Message édité par abais le 08-12-2009 à 17:02:19

---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
n°1948523
r@phblues
Globe-trotter biologique
Posté le 08-12-2009 à 18:20:03  profilanswer
 

ça me parait parfait tout ça. J'ai tout passé en AS2 par contre. (je suis sur Flash CS3)
Je comprends pas bien ce que fait "this.onEnterFrame" mais je vais chercher.
Merci à toi,


---------------
Tibet libre !
n°1948530
abais
Posté le 08-12-2009 à 19:07:39  profilanswer
 

Le onEnterFrame permet d'executer le code qu'il contient à chaque frame (à chaque entrée de frame quoi ).
Il faut bien entendu distinguer le concept de "frame" entre l'unité temporel et les key-frames de la timeline...

 

Je vais te donner le code en AS3 (je ne sais pas pourquoi je me suis imaginé que tu utilisais AS2) :
Deja, en AS3, le principe est d'avoir des "evenement" et de les "écouter" afin d'exécuter des fonctions...
Autrement dit, il y a des "causes" qui vont "causer" des "conséquence"  :D

 

Les évènements que l'on va écouter sont : ProgressEvent.PROGRESS (=> "pendant la progression du chargement" ) ainsi que Event.COMPLETE (=> la "fin du chargement" )...
Ces évènements sont écouter sur l'objet loaderInfo (propre à AS3) qui n'est autre que l'informateur sur le chargement de ton flash...

 

l'écoute d'un évenement est appelé de cette manière :
[monObjet].addEventListener([evenement que l'on espionne], [fonction executée si l'evenement est vrai]);

 
Code :
  1. // On stop !
  2. stop();
  3.  
  4. //On déclare la variable "rapport" de type Nombre qui nous servira plus tard
  5. var rapport:Number;
  6.  
  7. // On écoute l'evenement "chargement en progression", qui provoque la fontion calculChargement() (donc, à chaques frames jusqu'à la fin du chargement)
  8. loaderInfo.addEventListener(ProgressEvent.PROGRESS, calculChargement);
  9. // On écoute l'evenement "chargement complet", qui provoque la fonction finChargement()
  10. loaderInfo.addEventListener(Event.COMPLETE, finChargement);
  11.  
  12. // Il faut donc déclarer les fonctions dont on a besoin...
  13. function calculChargement(e:ProgressEvent):void {
  14.     // Il faut savoir que c'est l'argument "e" nommé ci-dessus qui contient les données interessantes
  15.     rapport = e.bytesLoaded / e.bytesTotal;
  16.     pourcent.text = Math.ceil(rapport * 100) + ' %';
  17. }
  18.  
  19. function finChargement(e:Event):void {
  20.     // A ce stade, on sait que si la fonction s'execute, c'est que le chargement est fini...
  21.     // On retire donc les écouteurs pour alléger Flash :)
  22.     loaderInfo.removeEventListener(ProgressEvent.PROGRESS, progressListener);
  23.     loaderInfo.removeEventListener(Event.COMPLETE, completeListener);
  24.     // Puis on va à la frame 2
  25.     gotoAndplay(2);
  26. }


C'est mieux de t'habituer à AS3 :)
Ça parait compliqué mais on s'y fait vite ! et on ne s'en passe plus... Le piege, c'est que AS2 parait bcp plus simple d'autant plus qu'il pardonne bcp d'erreur, mais utiliser AS3 est avantageux...
D'une part, il est plus puissant et rapide, d'une autre, il est plus similaire aux autres langages "C-Like"...
Apprendre l'AS3, aide à assimiler bien plus facilement le C/Python/PHP/JavaScript/ Java et j'en passe...


Message édité par abais le 08-12-2009 à 19:11:53

---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
n°1948775
r@phblues
Globe-trotter biologique
Posté le 09-12-2009 à 15:55:27  profilanswer
 

:jap: Merci !


---------------
Tibet libre !

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

  Affichage Loader et bouclage d'animation

 

Sujets relatifs
stockage et affichage d'une image dans une variable phpaffichage de texte en javascript
affichage débile en fonction des navigateurs...mais indescriptible quapb affichage avec safari
pb affichage ie7problème affichage sous IE
probleme d'affichage javascriptaffichage d'une image dans un Userform sur paramètre dans le chemin
affichage bases join table mysqlStructures, pointeurs..affichage?
Plus de sujets relatifs à : Affichage Loader et bouclage d'animation


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