Actionscript 3 从具有事件的类返回值:已将\u添加到\u阶段

Actionscript 3 从具有事件的类返回值:已将\u添加到\u阶段,actionscript-3,flash-cc,Actionscript 3,Flash Cc,我有一个类,它添加了一个到阶段事件(这是一个不完整的对话框),我希望它返回一个值。这可能吗?或者我该怎么做 我的班级: 编辑:我将在类中创建一些按钮。我希望按钮的函数返回一些值。我需要知道点击了哪个按钮。我想把这些值传递给主fla 我可能需要该类为对话框中指定的设置返回一个数组。一般来说,这里有一个视图。 用户可以与之交互的可视对象 您应该在该类中定义视图。显然,你想把一堆组合框和复选框传递给你的班级。 这不是做这件事的方法 组合框和复选框本身就是视图。它们也被称为组件(因为它们提供了样式等附加

我有一个类,它添加了一个到阶段事件(这是一个不完整的对话框),我希望它返回一个值。这可能吗?或者我该怎么做

我的班级:

编辑:我将在类中创建一些按钮。我希望按钮的函数返回一些值。我需要知道点击了哪个按钮。我想把这些值传递给主fla


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

一般来说,这里有一个
视图。
用户可以与之交互的可视对象

您应该在该类中定义
视图。显然,你想把一堆组合框和复选框传递给你的班级。
这不是做这件事的方法

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

您应该传递给类的内容是
模型
,即用户应该能够修改的数据

在Flash的组件领域中,这是一个
数据提供者
对象。 看一看这门课:

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

如您所见,
模型
数据提供程序
保存一些数据。 它是显示相同数据的所有视图共享的对象。 一旦以任何方式操纵此数据,所有其他
视图都会收到该更改的通知


我希望您能看到这是如何解决您的问题的:您的
视图是否为弹出窗口并不重要。只要它在与应用程序其余部分共享的
模型上运行,返回值的功能就已经存在。

您可以通过创建扩展
事件的自定义事件类来实现这一点,并在其中传递所需的参数

    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));
    }
并在主类上添加一个侦听器

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

我没有看到您试图在代码中的任何地方返回值(DrawRectangle除外,但这似乎不相关?)。你想什么时候还?当您创建类的对象时?请把你的问题重新表述清楚。也没有理由将代码放到异地。要返回值或传递一些参数吗?您想要返回的类型是什么?返回的原因是什么?谢谢您的回答。我编辑了这个问题。我没有将代码粘贴到这个问题上,因为这个网站不允许,因为代码太多。加上一个详细的答案。谢谢。我会尝试一下,如果这个答案有效的话,我会把它标记为接受。你好,我不确定把你的第二段代码放在哪里,但是当我把它放在我的课堂上这个问题,我得到了错误:我很困惑。我将代码的第一部分和第二部分移动到我的类中,第三部分移动到我的主fla中。CustomEvent.as:main fla:现在我得到错误1061。CustomEvent是一个类,它继承事件类的所有属性和方法。。把它分开。哇!我照你说的做了,并更改了dispatchEvent(新事件(CustomEvent.PASS_PARAMS,e.target.name));发送事件(新的CustomEvent(CustomEvent.PASS_参数,e.target.name));然后它就像一个符咒。谢谢。