如何在ActionScript中传递变量?

时间:2010-12-08 04:51:53

标签: actionscript-3

如何在ActionScript中将变量从一个页面传递到另一个页面? 我得到了一些解决方案,可以使用ActionScript中的CustomEvents来完成,但我找不到可理解的简单解决方案。任何人都可以用一个小例子来解释如何传递变量吗?请帮帮忙?

2 个答案:

答案 0 :(得分:0)

最佳做法是使用事件,以确保您的类不会过于紧密耦合。这是一种方法,但当然有许多不同的方法....

   //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 ) );
   }

答案 1 :(得分:0)

这个问题或多或少得到了PatrickS的回答,但遗漏了创建自定义事件的解释。因此,或多或少地添加到PatrickS的答案中,以下是自定义事件的示例。

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

要创建自定义事件,您必须扩展Event或其子类,例如的MouseEvent。 CustomEvent类是一个扩展Event的自定义事件。

创建自定义事件时,您可以创建自定义事件类型。事件类型是在调度事件时作为参数提供的字符串值。解析时,强烈建议以常量的形式给它们以使它们类型安全。为此,您可以为Event创建公共静态常量属性。例如,事件Event的事件类型为COMPLETE,它是一个公共静态常量,其字符串值为“complete”。在这种情况下,CustomEvent的事件类型为EXAMPLE,字符串值为“example”。

创建自定义事件时,您可以创建事件属性,以存储调度事件时给定的值。例如,事件ProgressEvent具有事件属性bytesLoaded。在这种情况下,CustomEvent有一个名为data的属性。

创建自定义事件时,构造函数必须具有事件类型,bubbles标志和可取消状态的参数。您还可以在此处添加要存储在事件属性中的值的参数,并使用它进行调度。在这种情况下,有一个名为p_data的参数,它是一个字符串类型。然后使用super关键字调用父类Event的构造函数,并解析在将自定义事件分派给父类的构造函数时给出的参数。我不会详细介绍这个,因为这会进入类继承,你真的不需要知道。接下来,将事件属性的值分配给调度事件时解析的数据。在这种情况下,事件CustomEvent的属性数据被赋予来自通过CustomEvent的构造函数解析的p_data参数的值。

我希望这有助于:)