从具有事件的类返回值:ADDED_TO_STAGE

时间:2015-04-20 11:05:27

标签: actionscript-3 flash-cc

我有一个带有ADDED_TO_STAGE事件的类(它是一个不完整的对话框),我希望它返回一个值。这可能吗?或者我应该遵循的方式是什么?

我的课程:http://sudrap.org/paste/text/555684/

编辑:我会在课堂上创建一些按钮。我希望按钮的功能能够返回一些值。我需要点击哪个按钮。我想将这些值传递给主fla。

我可能需要该类为对话框中指定的设置返回一个数组。

2 个答案:

答案 0 :(得分:1)

一般来说,您拥有的是 view 。 用户可以与之交互的视觉效果。

您应该在该课程中定义view。显然你想要将一堆组合框和复选框传递给你的班级。 这是的方法。

组合框和复选框本身就是视图。它们也被称为组件(因为它们提供了诸如样式等附加功能)。 如果您的弹出窗口应该由组合框和复选框组成,那很好。 在类PopupDialog中创建它们,但不要将它们传递给类。

您应该传递给您的课程的是 model ,即用户应该能够修改的数据。

在Flash的组件领域,这是一个DataProvider对象。 看一下description of the .dataProvider property of the ComboBox课程:

  

获取或设置要查看的项列表的数据模型。数据提供者可以由多个基于列表的组件共享。对使用它作为数据源的所有组件,可立即使用对数据提供程序的更改。

正如您所看到的,modeldataProvider包含一些数据。 它是显示相同数据的所有视图共享的对象。 只要以任何方式操纵此数据,就会通知所有其他views该更改。

我希望您能看到这是如何解决您的问题的:如果您的view是弹出窗口,则无关紧要。只要它在与您的应用程序的其余部分共享的model上运行,返回值的功能就已存在。

答案 1 :(得分:1)

您可以通过创建扩展Event的自定义事件类并在其中传递所需参数来实现此目的。

    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类上添加一个监听器

    this.addEventListener(CustomEvent.PASS_PARAMS, onProcessedEvent);       
    private function onProcessedEvent(e:CustomEvent):void{
        trace(e.btnName);
    }
相关问题