【问题标题】:Event dispatcher事件调度器
【发布时间】:2017-10-21 20:39:40
【问题描述】:

我有两个班级,我尝试了从一个班级到另一个班级的事件调度。在这里,我使用按钮来调用该类。但是调度不起作用。

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'));

      }

  }

}

类名 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 中我使用这个实例来运行类

var Call:EventDispatcherExample = new EventDispatcherExample(this);

每当我单击 adobe flash cc 中的按钮 (btn_mc) 时,它都不会显示任何 跟踪调度事件。所以请对此进行分析并给出解决方案。

【问题讨论】:

  • 因为 Globe.self.realstage 不调度 myevent 事件。

标签: actionscript-3 flash actionscript flex3


【解决方案1】:

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

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

var start:CusDispatcher = new CusDispatcher();

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

private var start:CusDispatcher;

public function EventDispatcherExample(Mc:MovieClip)...

然后将新的 Dispatcher 分配给它

start = new CusDispatcher();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 2017-10-19
    • 2012-05-04
    • 2014-02-06
    • 2013-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多