事件调度员

Event dispatcher

我有两个 class,我尝试 事件调度 从一个 class 到另一个 class。在这里,我使用按钮来调用 class。但是 dispatch 不起作用。

class name cusDispatcher.as
 package 

{

import flash.display.MovieClip;
import flash.events.EventDispatcher;
import flash.events.Event;
import flash.events.MouseEvent;
import Globe;


public  class CusDispatcher extends EventDispatcher
{


    public function CusDispatcher():void
    {


        Globe.self.realstage.btn_mc.addEventListener(MouseEvent.CLICK, 
    doAction);


    }
    public function doAction(event:MouseEvent):void 
    {
        dispatchEvent(new Event('myevent'));

      }

  }

}

class 名字 EventDispatcherExample.as 包裹 {

import flash.display.DisplayObject;
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.EventDispatcher;
import Globe;

public class EventDispatcherExample extends EventDispatcher
{


    public function EventDispatcherExample(Mc:MovieClip) 
    {
            Globe.self.realstage = Mc;
            var start:CusDispatcher = new CusDispatcher();

            Globe.self.realstage.addEventListener('myevent', handler);
            trace("one");

    }

    public function handler(event:Event):void
    {
        trace("My Event");


    }
 }
 }

在 adobe CC 中,我使用此实例 运行 class

var Call:EventDispatcherExample = new EventDispatcherExample(this);

每当我单击 adobe flash cc 中的按钮 (btn_mc) 时,它不显示任何内容 调度跟踪 event.So 请分析并给出解决方案。

您的其他点击侦听器(在 EventDispatcherExample 中)是否正常工作?

问题可能是您已将 CusDispatcher 声明为函数中的局部变量

var start:CusDispatcher = new CusDispatcher();

一旦函数完成,这些变量就会被清除。尝试在 class 的开头将其声明为 class 变量:

private var start:CusDispatcher;

public function EventDispatcherExample(Mc:MovieClip)...

然后将您的新 Dispatcher 分配给它

start = new CusDispatcher();