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

  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  AS3 : Animer un clip depuis une classe?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

AS3 : Animer un clip depuis une classe?

n°1701884
electroger
Posté le 13-03-2008 à 16:58:22  profilanswer
 

Bonjour tout le monde,
 
Je commence l'AS3 et je galère un peu... J'ai certainement des problèmes de méthode et un manque de connaissance en POO.  
J'aimerai savoir s'il est possible de modifier un clip (ses dimensions, ses coordonnées, son opacité) depuis une classe importer dans un clip parent? C'est la librairie Tweener qui permet ce genre de chose?
 
Pour expliquer ce que j'ai fait jusque là, je charge dans mon FLA principal les différents clips utilisés pour mon site (dans mon exemple il n'y a que le SWF "BDZ_preloader.swf" ) :
 

Code :
  1. import ch.capi.net.*;
  2. import ch.capi.events.*;
  3. import flash.events.*;
  4. import caurina.transitions.*;
  5. import Preloader;
  6. var factory:LoadableFileFactory = new LoadableFileFactory();
  7. var loader:PriorityMassLoader = new PriorityMassLoader();
  8. //création des fichiers
  9. var bdz_preloader:ILoadableFile = factory.create("BDZ_preloader.swf" );
  10. //ajout des fichiers dans la liste de chargement
  11. loader.addPrioritizedFile(bdz_preloader, 10);
  12. var mc_bdz_preloader:Loader = bdz_preloader.loadManagerObject as Loader;
  13. addChild(mc_bdz_preloader);
  14. var preloader:Preloader = new Preloader();
  15. var accueil_progres:Function = function(evt:Event):void {
  16. var pourcent = preloader.setPourcent(evt.bytesLoaded,evt.bytesTotal);
  17. };
  18. loader.addEventListener(ProgressEvent.PROGRESS, accueil_progres);
  19. loader.start();


 
Ma classe Preloader :
 

Code :
  1. package {
  2. import ch.capi.net.*;
  3. import ch.capi.events.*;
  4. import flash.events.*;
  5. import caurina.transitions.*;
  6. public class Preloader {
  7.  public function setPourcent(loaded:Number,total:Number):int {
  8.   // Calcul du pourcentage chargé
  9.   var preloader_progres:int = Math.round((loaded/total)*100);
  10.   trace(preloader_progres);
  11.  }
  12.  public function affichePreloader(mc:Object) {
  13.   trace(mc);
  14.   //addChild(mc);
  15.  }
  16. }
  17. }


 
Pendant le chargement de mes swf un objet "Preloader" est créé. Il va me calculer le taux de chargement de mon animation totale avec la méthode setPourcent. Ce calcul va avoir des conséquences sur le clip "mc_bdz_preloader" chargé et affiché avec addChild sur la scène principale (progression de la barre de chargement etc.).  
Je sais pas si je peux agir sur le clip preloader depuis la classe. Peut être qu'il est préférable, si c'est possible, d'afficher ce clip dans la classe Preloader, c'est à dire que l'objet sera affiché (en utilisant une methode "affichePreloader" ) et modifié dans la classe.
 
Je suis perdu et j'ai un peu de mal à avancer... Si quelqu'un a le courage de me donner un coup de main, je suis intéressé  :hello: .

mood
Publicité
Posté le 13-03-2008 à 16:58:22  profilanswer
 

n°1702036
antika
Posté le 13-03-2008 à 19:59:16  profilanswer
 

ta classe doit étendre flash.display.MovieClip et être liée au clip preloader_mc dans la bibliothèque (clic-droit sur le nom du clip). A partir de là , les éléments graphiques présents dans ce clip sont accessibles comme des propriétés publiques, appelées simplement en utilisant leur nom d'occurrence (que l'on attribue en cliquant l'élément sur la scène et en tapant dans la boite "propriétés" ).
 
dès lors une instanciation suivie d'un ajout à la liste d'affichage (addChild(new Preloader())) depuis ta classe racine de l'application va créer effectivement un preloader visible.
 
ta classe racine doit être dans un .as située dans le même dossier que le .fla, tu la lie à ton application via la barre de propriétés (clique sur du vide, hop, la case apparait en bas).

n°1702114
electroger
Posté le 13-03-2008 à 23:05:58  profilanswer
 

antika a écrit :

ta classe doit étendre flash.display.MovieClip et être liée au clip preloader_mc dans la bibliothèque (clic-droit sur le nom du clip). A partir de là , les éléments graphiques présents dans ce clip sont accessibles comme des propriétés publiques, appelées simplement en utilisant leur nom d'occurrence (que l'on attribue en cliquant l'élément sur la scène et en tapant dans la boite "propriétés" ).
 
dès lors une instanciation suivie d'un ajout à la liste d'affichage (addChild(new Preloader())) depuis ta classe racine de l'application va créer effectivement un preloader visible.
 
ta classe racine doit être dans un .as située dans le même dossier que le .fla, tu la lie à ton application via la barre de propriétés (clique sur du vide, hop, la case apparait en bas).


 
Déjà, merci pour ton aide !
 
Je vois pas comment lier la classe au clip du Prelaoder par la bibliothèque parce que le clip en question n'est pas dans la bibliothèque. C'est un autre SWF chargé dans mon SWF principal...  
var bdz_preloader:ILoadableFile = factory.create("BDZ_preloader.swf" );
 Dans ce cas, comment faire?
 
L'affichage dois se lancer depuis la classe principale, c'est au autre classe que la classe Preloader? La classe principal va créer un nouvel objet de type Preloader? Pour l'instant la Classe Preloader est la seule que j'ai créé.
 
La classe racine doit être lié à mon clip principal? C'est à dire mon Main.swf qui appelle preloader.swf?
 
C'est pas encore très clair pour moi. Merci en tout cas pour ton aide !

n°1706183
electroger
Posté le 21-03-2008 à 15:59:40  profilanswer
 

Je pense avoir un peu avancé. J'ai désormais une DocumentClass sur mon preloader.swf. Cette classe déclarer une variable qui sera affichée dans un TextField de mon preloader.
 
J'aimerai depuis mon main.swf lancer une fonction de la DocumentClass de mon preloader pour modifier la variable affichée dans mon prelaoder :
 
Main.swf  
 

Code :
  1. import ch.capi.net.*;
  2. import ch.capi.events.*;
  3. import flash.events.*;
  4. import flash.text.*;
  5. import caurina.transitions.*;
  6. import Preloader;
  7. var factory:LoadableFileFactory = new LoadableFileFactory();
  8. var loader:PriorityMassLoader = new PriorityMassLoader();
  9. //création des fichiers
  10. var bdz_preloader:ILoadableFile = factory.create("BDZ_preloader.swf" );
  11. //ajout des fichiers dans la liste de chargement
  12. loader.addPrioritizedFile(bdz_preloader, 10);
  13. var mc_bdz_preloader:Loader = bdz_preloader.loadManagerObject as Loader;
  14. addChild(mc_bdz_preloader);
  15. // Progression du chargement, lancement du Preloader
  16. var accueil_progres:Function = function(evt:Event):void {
  17. var tauxPreloader:int = Math.round((evt.bytesLoaded/evt.bytesTotal)*100);
  18. var pourcent = setPreloader(tauxPreloader as MovieClip);
  19. };
  20. loader.addEventListener(ProgressEvent.PROGRESS, accueil_progres);
  21. loader.start();


 
La DocumentClass, Preloader.as de mon preloader.swf :
 

Code :
  1. package
  2. {
  3. import flash.display.*;
  4. import flash.text.TextField;
  5. public class Preloader extends MovieClip
  6. {
  7.  private static var _preloader:Preloader = null;
  8.  private static var _pourcent:int;
  9.  public static var txt_pourcent:TextField;
  10.  public function Preloader():void
  11.  {
  12.   _preloader = this;
  13.  }
  14.  public static function setPourcent(pourcent)
  15.  {
  16.   _pourcent = pourcent;
  17.   return _pourcent;
  18.  }
  19. }
  20. }


 
La variable _pourcent qui est affichée dans mon preloader.swf, n'est pas modifiée, malgré que la fonction setPourcent soit lancée dans mon main.swf... Je vois pas comment faire... Une petite idée?


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

  AS3 : Animer un clip depuis une classe?

 

Sujets relatifs
Diagramme classe, BDD relationnel, formes normalesAS3 : Transmettre une variable entre SWF
Clip dans un clipdiagramme de classe uml TO bdd relationnel
passer d'une classe a une autre dans un fichier differend??Classe dans une classe
[Conseil] PHP & classe Formulaires [résolu]flash: revenir là ou le clip s'est arreté
Mise a jour de JTable entre classePasser une classe à une fonction dans une méthode.
Plus de sujets relatifs à : AS3 : Animer un clip depuis une classe?


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