Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 如何将事件分派到动作脚本3中的另一个类?_Actionscript 3_Actionscript - Fatal编程技术网

Actionscript 3 如何将事件分派到动作脚本3中的另一个类?

Actionscript 3 如何将事件分派到动作脚本3中的另一个类?,actionscript-3,actionscript,Actionscript 3,Actionscript,我搜索了一些文档,但找不到关于将事件分派到其他类的信息 我正试着这样做 “main”类有一个按钮 单击按钮时,“main”,“sub”类将跟踪“button is clicked” 我可以通过dispatch事件在“main”类中跟踪它 但“次级”班是个问题 我如何将这样的事件分派到“子”类中 主类 子类 您应该将var subClass:sub重新定位到main类定义的主要集合,在public static const BTN\u CLICKED:String=“BTN\u CLICKED”旁

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

我正试着这样做

  • “main”类有一个按钮
  • 单击按钮时,“main”,“sub”类将跟踪“button is clicked”
  • 我可以通过dispatch事件在“main”类中跟踪它

    但“次级”班是个问题

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

    主类 子类
    您应该将
    var subClass:sub
    重新定位到
    main
    类定义的主要集合,在
    public static const BTN\u CLICKED:String=“BTN\u CLICKED”旁边。然后,您可以执行
    子类.dispatchEvent(…)


    sub
    main
    类的任何代码是否可能重复?两者都是需要的。这是同一个问题。
    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");
            }
        }
    
    }
    
    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));
        }
    }