2010-12-08 211 views
0

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

回答

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

这个问题已经或多或少被帕特里克回答,但创建自定义事件的交代被排除在外。所以或多或少地加入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 

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

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

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

创建自定义事件时,构造函数必须具有事件类型,bubbles标志和可取消状态的参数。这也是您可以为要存储在事件属性中的值添加参数并与之一起分派的参数。在这种情况下,有一个称为p_data的参数,它是一个字符串类型。然后使用super关键字来调用父类Event的构造函数,并分析将自定义事件分派给父类的构造函数时给出的参数。我不会详细讨论这个问题,因为它会进入类继承,而且你不需要知道这一点。接下来,将事件属性的值与分派事件时分析的数据一起分配。在这种情况下,事件CustomEvent的属性数据被分配了来自通过CustomEvent的构造函数解析的p_data参数的值。我希望这有助于:)