在类之间调度事件

2024-05-10

我有一个自定义事件类

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

另一个班级听这个事件。该类扩展了 SpriteVisualElement。

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

不幸的是这不起作用。事件已调度(返回 true),但事件侦听器从未被触发。

这两个类(Dispatcher 和 Listener)都是 MXML 应用程序的子类。另外,在父 MXML 应用程序中监听事件也不起作用。监听调度类本身的事件以某种方式起作用。

我必须感觉到 EventDispatcher 类不适合将事件分派到 mxml 应用程序或相应的 AS 类,它们是从 MXML 组件类扩展/继承的。

有人可以帮我吗?


您应该监听调度程序上的事件。在你的情况下,一个实例ToneGenerator正在调度事件并且SpectrumVisualizer正在听——那是行不通的。

监听调度类本身的事件以某种方式起作用。

这是唯一可行的方法。

你打电话时

this.addEventListener(FFTDrawEvent.DRAW_EVENT, draw);

你在告诉this调用对象this.draw方法每当它(thisobject)调度一个类型的事件FFTDrawEvent.DRAW_EVENT。将其更改为

toneGen.addEventListener(FFTDrawEvent.DRAW_EVENT, draw);

现在你告诉toneGen调用对象this.draw方法每当它(toneGenobject)调度一个类型的事件FFTDrawEvent.DRAW_EVENT.

您还可以从父 mxml 执行以下操作。

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在类之间调度事件 的相关文章

随机推荐