2010-12-08 6 views
0

Comment passer des variables d'une page à une autre dans ActionScript? J'ai obtenu une solution que cela peut être fait en utilisant CustomEvents en ActionScript, mais je n'ai pas trouvé de solution compréhensible et facile. Quelqu'un peut-il expliquer comment passer des variables avec un petit exemple? S'il vous plaît aidez?Comment passer des variables dans ActionScript?

Répondre

0

La meilleure pratique consiste à utiliser des événements afin de garantir que vos classes ne sont pas trop étroitement couplées. Voici une façon de le faire, mais il y a bien sûr de nombreuses approches différentes disponibles ....

//In your main class 
    private var dispatcher:EventDispatcher = new EventDispatcher(); 

    private var page1:A; 
    private var page2:B; 

    public function Main() 
    { 
     page1 = new A(dispatcher); 
     page2 = new B(dispatcher); 
    } 


    //In Class A (or Class B) 
    private var dispatcher:EventDispatcher; 

    public function A(dispatcher:EventDispatcher) 
    { 
     this.dispatcher = dispatcher; 
     dispatcher.addEventListener(CustomEvent.EXAMPLE , customEventListener); 
    } 

    private function customEventListener(event:CustomEvent):void 
    { 
     trace(event.type , event.data); 
    } 

    private function anyMethod(data:Object):void 
    { 
     //using a CustomEvent with a data property 
     //also passing a type can help in selecting between actions 
     dispatcher.dispatchEvent(new CustomEvent(CustomEvent.EXAMPLE , data)); 
    } 
0

Cette question a été plus ou moins répondu par PatrickS, mais la création d'événements de explaination personnalisés a été laissé de côté. Donc, pour ajouter plus ou moins à la réponse de PatrickS, voici un exemple d'événement personnalisé.

package com.events 
{ 
    import flash.events.Event; 

    public class CustomEvent extends Event 
    { 
     public static const EXAMPLE:String = "example"; 

     public var data:String; 

     public function CustomEvent(p_type:String, 
            p_data:String, 
            p_bubbles:Boolean = false, 
            p_cancelable:Boolean = false):void 
     { 
      super(p_type, p_bubbles, p_cancelable); 
      data = p_data; 

     }// end function 

     override public function clone():Event 
     { 
      return new CustomEvent(type, data, bubbles, cancelable); 

     }// end function 

    }// end class 

}// end package 

Pour créer un événement personnalisé, vous devez étendre l'événement ou une sous-classe de celui-ci, par exemple MouseEvent. La classe CustomEvent est un événement personnalisé qui étend Event. Lors de la création d'un événement personnalisé, vous pouvez créer des types d'événements personnalisés. Les types d'événements sont des valeurs de chaîne qui sont données en tant qu'arguments lors de l'envoi d'un événement. Lorsqu'ils sont analysés, il est fortement recommandé de les donner sous la forme d'une constante pour les rendre plus sûrs. C'est dans ce but que vous créez une propriété constante statique publique pour un événement. Par exemple, l'événement Event a le type d'événement COMPLETE qui est une constante statique publique qui a une valeur de chaîne "complete". Dans ce cas, CustomEvent a un type d'événement EXAMPLE avec une valeur de chaîne "example".

Lors de la création d'un événement personnalisé, vous pouvez créer des propriétés d'événement qui stockent les valeurs qui sont données lors de l'envoi de l'événement. Par exemple, l'événement ProgressEvent a la propriété d'événement bytesLoaded. Dans ce cas, CustomEvent a une propriété appelée data.

Lors de la création d'un événement personnalisé, le constructeur doit avoir un paramètre pour le type d'événement, l'indicateur de bulles et l'état annulable. C'est ici que vous pouvez également ajouter des paramètres pour les valeurs que vous voulez stocker dans les propriétés de l'événement et les envoyer avec lui. Dans ce cas, il existe un paramètre appelé p_data qui est un type de chaîne. Vous utilisez ensuite le super mot clé pour appeler le constructeur de la classe parente Event et analyser les arguments donnés lors de la distribution de l'événement personnalisé au constructeur de la classe parente. Je ne vais pas entrer dans les détails à ce sujet parce que cela va dans l'héritage de classe et vous n'avez vraiment pas besoin de le savoir. Ensuite, vous affectez les valeurs des propriétés de l'événement aux données analysées lors de l'envoi de l'événement. Dans ce cas, les données de propriété de l'événement CustomEvent reçoivent la valeur de l'argument p_data analysée via le constructeur de CustomEvent. Je souhaite que cela a aidé :)

Questions connexes