课间调度事件 [英] Dispatching events between classes

查看:143
本文介绍了课间调度事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个自定义事件类

public class FFTDrawEvent extends Event {

    public static const DRAW_EVENT:String = "drawEvent";

    private var _param:Array = new Array();

    public function FFTDrawEvent(type:String, __param:Array, bubbles:Boolean=true, cancelable:Boolean=false) {
        _param = __param;
        super(type, bubbles, cancelable);
    }

    public function get param():Array {
        return _param;
    }
}

此事件是由一类,扩展的EventDispatcher 出动

public class ToneGenerator extends EventDispatcher { public function someFunction():void { this.dispatchEvent(new FFTDrawEvent(FFTDrawEvent.DRAW_EVENT,_param)); }

Another class listen to this event. This class is extending SpriteVisualElement.

另一类监听此事件。此类扩展SpriteVisualElement。

public class SpectrumVisualizer extends `SpriteVisualElement`: { public function SpectrumVisualizer() { this.addEventListener(FFTDrawEvent.DRAW_EVENT, draw); }

Unfortunately this doesn't work. The event is dispatched (returns with true), but the Event listener is never triggered. 

不幸的是,这并不正常工作。该事件被分派(收益与真正的),但该事件侦听器永远不会触发。

Both class (Dispatcher & Listener) are Child class of a MXML application. Also listen to the event in the parent MXML application doens't work. Listen to the event in the dispatching class itself somehow works.

这两个类(分派及放大器,监听器)是儿童类MXML应用程序。也听父MXML应用程序好好尝试一下工作的情况。收听调度类本身以某种方式的事件。

I have to feeling that the EventDispatcher class is not the right one to dispatch events to a mxml application or respectivly AS classes, which extend/inherent from a MXML component class.

我要的感觉,EventDispatcher类是不正确的调度事件到MXML应用程序或respectivly AS类,扩展/固有从MXML组件类。

Anybody can help me with that?

有人能帮助我吗?

推荐答案

您应该侦听调度的事件。在你的情况, ToneGenerator 的实例分派事件和 SpectrumVisualizer 正在听 - 这是行不通的<。 / P>

  

听的调度类本身以某种方式活动。

Listen to the event in the dispatching class itself somehow works.

这就是它的工作的唯一办法。

That's the only way it would work.

当你调用

this.addEventListener(FFTDrawEvent.DRAW_EVENT, draw);

你告诉对象调用 this.draw 方法,只要它(这个)对象调度类型的事件 FFTDrawEvent.DRAW_EVENT 。将其更改为

you are telling this object to call this.draw method whenever it (the this object) dispatches an event of type FFTDrawEvent.DRAW_EVENT. Change it to

toneGen.addEventListener(FFTDrawEvent.DRAW_EVENT, draw);

现在你告诉 toneGen 对象调用 this.draw 方法,只要它( toneGen )对象调度类型的事件 FFTDrawEvent.DRAW_EVENT

Now you are telling toneGen object to call this.draw method whenever it (the toneGen object) dispatches an event of type FFTDrawEvent.DRAW_EVENT.

您也可以做从父MXML以下。

You can also do the following from the parent mxml.

toneGen.addEventListener(FFTDrawEvent.DRAW_EVENT, specVis.draw);

呼叫 specVis.draw 每当 toneGen 对象调度类型的事件方法 FFTDrawEvent .DRAW_EVENT

Call specVis.draw method whenever the toneGen object dispatches an event of type FFTDrawEvent.DRAW_EVENT.

这篇关于课间调度事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆