如何在ActionScript中将变量从一个页面传递到另一个页面? 我得到了一些解决方案,可以使用ActionScript中的CustomEvents来完成,但我找不到可理解的简单解决方案。任何人都可以用一个小例子来解释如何传递变量吗?请帮帮忙?
答案 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参数的值。
我希望这有助于:)