Return 来自 class 的值具有以下事件:ADDED_TO_STAGE
Return value from class that has event: ADDED_TO_STAGE
我有一个 class 和 ADDED_TO_STAGE 事件(这是一个不完整的对话框),我希望它成为 return 一个值。这可能吗?或者我应该遵循什么方式?
我的class:http://sudrap.org/paste/text/555684/
编辑: 我将在 class 中创建一些按钮。我想要按钮的功能 return 一些值。我需要得到点击了哪个按钮。我想将这些值传递给 main fla。
我可能需要 class 到 return 对话框中指定设置的数组。
一般来说你有一个view
。
用户可以与之互动的视觉效果。
您应该在 class 中定义您的 view
。显然您想将一堆组合框和复选框传递给您的 class。
这是不是的方法。
组合框和复选框本身就是视图。它们也称为组件(因为它们提供额外的功能,如样式等)。
如果您的弹出窗口应该由组合框和复选框组成,那很好。
在 class PopupDialog 中创建它们,但不要将它们传递给 class.
您应该传递给 class 的是 model
,即用户应该能够修改的数据。
在 Flash 组件领域,这是一个 DataProvider
对象。
看看 description of the .dataProvider
property of the ComboBox class:
Gets or sets the data model of the list of items to be viewed. A data provider can be shared by multiple list-based components. Changes to the data provider are immediately available to all components that use it as a data source.
如您所见,model
或 dataProvider
包含一些数据。
它是一个对象,由显示相同数据的所有视图共享。
一旦以任何方式操纵此数据,所有其他 views
都会收到该更改的通知。
我希望你能看到这如何解决你的问题:你的 view
是否是弹出窗口并不重要。只要它在与应用程序的其余部分共享的 model
上运行,return 值的功能就已经存在。
您可以通过创建扩展 Event
并在其中传递所需参数的自定义事件 class 来实现。
package{
import flash.events.Event;
public class CustomEvent extends Event{
public static const PASS_PARAMS:String = "passParams";
// Your custom properties.
public var btnName:*;
public function CustomEvent(type:String, bName:*, bubbles:Boolean=false, cancelable:Boolean=false):void {
this.btnName = bName;
super(type, bubbles, cancelable);
}
override public function clone():Event{
return new CustomEvent(type,btnName, bubbles, cancelable);
}
}
}
并在按钮点击事件发生时调度你的customEvent
btn.addEventListener(MouseEvent.CLICK, onBtnClick);
private function onBtnClick(e:MouseEvent):void{
dispatchEvent(new Event(CustomEvent.PASS_PARAMS, e.target.name));
}
并在您的 Main class
上添加一个侦听器
this.addEventListener(CustomEvent.PASS_PARAMS, onProcessedEvent);
private function onProcessedEvent(e:CustomEvent):void{
trace(e.btnName);
}
我有一个 class 和 ADDED_TO_STAGE 事件(这是一个不完整的对话框),我希望它成为 return 一个值。这可能吗?或者我应该遵循什么方式?
我的class:http://sudrap.org/paste/text/555684/
编辑: 我将在 class 中创建一些按钮。我想要按钮的功能 return 一些值。我需要得到点击了哪个按钮。我想将这些值传递给 main fla。
我可能需要 class 到 return 对话框中指定设置的数组。
一般来说你有一个view
。
用户可以与之互动的视觉效果。
您应该在 class 中定义您的 view
。显然您想将一堆组合框和复选框传递给您的 class。
这是不是的方法。
组合框和复选框本身就是视图。它们也称为组件(因为它们提供额外的功能,如样式等)。 如果您的弹出窗口应该由组合框和复选框组成,那很好。 在 class PopupDialog 中创建它们,但不要将它们传递给 class.
您应该传递给 class 的是 model
,即用户应该能够修改的数据。
在 Flash 组件领域,这是一个 DataProvider
对象。
看看 description of the .dataProvider
property of the ComboBox class:
Gets or sets the data model of the list of items to be viewed. A data provider can be shared by multiple list-based components. Changes to the data provider are immediately available to all components that use it as a data source.
如您所见,model
或 dataProvider
包含一些数据。
它是一个对象,由显示相同数据的所有视图共享。
一旦以任何方式操纵此数据,所有其他 views
都会收到该更改的通知。
我希望你能看到这如何解决你的问题:你的 view
是否是弹出窗口并不重要。只要它在与应用程序的其余部分共享的 model
上运行,return 值的功能就已经存在。
您可以通过创建扩展 Event
并在其中传递所需参数的自定义事件 class 来实现。
package{
import flash.events.Event;
public class CustomEvent extends Event{
public static const PASS_PARAMS:String = "passParams";
// Your custom properties.
public var btnName:*;
public function CustomEvent(type:String, bName:*, bubbles:Boolean=false, cancelable:Boolean=false):void {
this.btnName = bName;
super(type, bubbles, cancelable);
}
override public function clone():Event{
return new CustomEvent(type,btnName, bubbles, cancelable);
}
}
}
并在按钮点击事件发生时调度你的customEvent
btn.addEventListener(MouseEvent.CLICK, onBtnClick);
private function onBtnClick(e:MouseEvent):void{
dispatchEvent(new Event(CustomEvent.PASS_PARAMS, e.target.name));
}
并在您的 Main class
上添加一个侦听器 this.addEventListener(CustomEvent.PASS_PARAMS, onProcessedEvent);
private function onProcessedEvent(e:CustomEvent):void{
trace(e.btnName);
}