【问题标题】:How can I dispatch event to another class in Action Script 3?如何在 Action Script 3 中将事件分派给另一个类?
【发布时间】:2014-11-11 04:07:54
【问题描述】:

我搜索了几个文档,但找不到关于将事件分派给其他类的信息。

我正在努力做到这一点。

  1. 'main' 类有按钮。
  2. 'main','sub' 类将在单击按钮时跟踪“单击按钮”

我可以通过调度事件在“主”类中跟踪它。

但是“子”类是个问题。

如何将这样的事件分派到“子”类中?

主类

package com
{
    import flash.events.*;
    import flash.display.MovieClip;
    import com.sub;

    public class main extends MovieClip
    {
        public static const BTN_CLICKED:String = "btn_Clicked";

        public function main():void
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }

        public function init(e:Event = null):void
        {
            var flashVars:Object = {};

            removeEventListener(Event.ADDED_TO_STAGE, init);
            if(parent != null && parent.parent != null)
            {
                flashVars = parent. parent.loaderInfo.parameters;
            }
            else
            {
                flashVars = this.root.loaderInfo.parameters;
            }
            //entry point
            var subClass:sub = new sub;
            subClass.init();

            btn.addEventListener(MouseEvent.CLICK, onClick);
            addEventListener(BTN_CLICKED, onbtnClicked, false, 0, true);
        }

        public function onClick(e:MouseEvent)
        {
            dispatchEvent(new Event(BTN_CLICKED));
        }

        public function onbtnClicked(e:Event)
        {
            trace("clicked");
        }
    }
}

子类

package com
{
    import flash.events.*;
    import flash.display.MovieClip;
    import com.main;

    public class sub extends MovieClip
    {
        public function sub():void
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);

        }

        public function init(e:Event = null):void
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            //entry point
            trace("sub class loaded");
        }
    }

}

【问题讨论】:

标签: actionscript-3 actionscript


【解决方案1】:

您应该将var subClass:sub 重新定位到main 类定义的主要集,位于public static const BTN_CLICKED:String = "btn_Clicked"; 旁边。然后,你可以subClass.dispatchEvent(...)

public class main extends MovieClip {
    private var subClass:sub;
    public function main() {
        ...
        subClass=new sub();
        addChild(subClass); // not just "init()", it's wrong
        ...
    }
    public function onClick(e:MouseEvent)
    {
        dispatchEvent(new Event(BTN_CLICKED));
        subClass.dispatchEvent(new Event(BTN_CLICKED));
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-22
    • 2013-09-25
    • 1970-01-01
    相关资源
    最近更新 更多