AS3 : Transmettre une variable entre SWF

AS3 : Transmettre une variable entre SWF - Flash/ActionScript - Programmation

Marsh Posté le 07-03-2008 à 09:07:14    

Bonjour,
 
Je cherche un moyen de transmettre une variable depuis un SWF vers un autre SWF. Avant j'utilisais des variables globales mais depuis AS3 "_global" n'existe plus... Est ce que vous connaissez un moyen de passer des variables entre SWF?
 
 

Code :
  1. var accueil_progres:Function = function(evt:Event):void {
  2. var preloader_progres = Math.round((evt.bytesLoaded/evt.bytesTotal)*100);
  3. };


 
Dans une variable du type fonction je déclare une variable "preloader_progres" et j'aimerai transmettre cette variable à mon 2eme SWF.
 
 
Merci !

Reply

Marsh Posté le 07-03-2008 à 09:07:14   

Reply

Marsh Posté le 08-03-2008 à 00:16:58    

Ce n'est pas assez précis pour pouvoir t'aider - quelle est la structure des classes de ton application ?

Reply

Marsh Posté le 08-03-2008 à 00:32:26    

En fait je cherchais un moyen propre de gérer mes chargements de SWF et je suis tombé sur l'API Masapi qui permet ce genre de choses. Peut être que tu connais? Je commence juste l'AS3 et je connaissais pas du tout.
 
Voici le code de ma page principale :
 

Code :
  1. import ch.capi.net.*;
  2. import ch.capi.events.*;
  3. import flash.events.*;
  4. var factory:LoadableFileFactory = new LoadableFileFactory();
  5. var loader:PriorityMassLoader = new PriorityMassLoader();
  6. //création des fichiers
  7. var bdz_preloader:ILoadableFile = factory.create("mon_preloder.swf" );
  8. //création du loader
  9. //var loader:MassLoader = new MassLoader();
  10. //ajout des fichiers dans la liste de chargement
  11. loader.addPrioritizedFile(bdz_preloader, 10);
  12. // Chargements des autres fichiers
  13. var accueil_progres:Function = function(evt:Event):void {
  14. var mc_bdz_preloader:Loader = bdz_preloader.loadManagerObject as Loader;
  15. addChild(mc_bdz_preloader);
  16. var preloader_progres:int = Math.round((evt.bytesLoaded/evt.bytesTotal)*100);
  17. };
  18. var accueil_complet:Function = function(evt:Event):void {
  19. // affichage des autres SWF
  20. };
  21. var p:Function = function(evt:ProgressEvent):void {
  22. };
  23. loader.addEventListener(ProgressEvent.PROGRESS, accueil_progres);
  24. loader.addEventListener(Event.COMPLETE, accueil_complet);
  25. loader.start();


 
la variable accueil_progres va afficher mon swf, le preloader. J'aimerai transmettre à ce swf la variable preloader_progres mais je sais pas comment m'y prendre.
 
J'espère que c'est clair  :sweat: .

Reply

Marsh Posté le 08-03-2008 à 11:12:14    

Quelle est la structure des classes de ton application ?

Reply

Marsh Posté le 09-03-2008 à 22:55:19    

antika a écrit :

Quelle est la structure des classes de ton application ?


 
Je vois pas ce que je peux te répondre. Pour l'instant je n'ai créé aucune classe, j'ai juste utilisé celles de Masapi. Est ce que tu veux que je te montre le contenu d'un fichier AS de Masapi?

Reply

Marsh Posté le 10-03-2008 à 19:29:11    

Considère tes .swf comme des objets, attache-leur une classe Document, et fais un getter-setter sur la classe.
 
En AS3 on ne mets plus de code en timeline. Ton code devrait aussi être dans une classe document attachée à ton .swf "racine".
 
Flash CS3 est un Flex light. Donc tu dois bosser de la même manière que sous Flex : des composants, des skins, des classes. Toute autre méthode est vouée à l'échec.

Message cité 1 fois
Message édité par antika le 10-03-2008 à 19:31:14
Reply

Marsh Posté le 11-03-2008 à 09:07:12    

Merci beaucoup pour ces précisions ! Ca reste un peu flou, je suis obligé de l'avouer, mais je vais me renseigner.
 

antika a écrit :

En AS3 on ne mets plus de code en timeline. Ton code devrait aussi être dans une classe document attachée à ton .swf "racine".


 
Est ce que ça veut dire que dans mes fichiers FLA je vais juste définir des variables et appeler mes objets? Tout le reste se jouera dans les fichiers AS?

Reply

Marsh Posté le 11-03-2008 à 21:14:05    

oui.

Reply

Marsh Posté le 12-03-2008 à 20:06:30    

Ca veut dire que je peux déplacer (changer les dimensions, l'opacité...) d'un clip du fichier preloader.swf, charger dans index.swf via un classe importer elle aussi dans index.swf?
Pour l'instant j'ai une classe qui calcule le taux de chargement de mon animation totale, mais je vois pas comment modifier un clip de preloader.swf...
 

Code :
  1. package {
  2. public class Preloader {
  3.  public function setPourcent(loaded:Number,total:Number):int {
  4.   // Calcul du pourcentage chargé
  5.   var preloader_progres:int = Math.round((loaded/total)*100);
  6.   trace(preloader_progres);
  7.  }
  8. }
  9. }


 
EDIT : Peut être que je devrait plutôt créer l'objet dans me FLA pour ensuite lancer l'affichage du Preloader dans la classe et utiliser des fonctions pour altérer sa présentation. Je vais voir ça. En tout cas je suis pas au point sur la POO...


Message édité par electroger le 13-03-2008 à 09:28:45
Reply

Sujets relatifs:

Leave a Replay

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