【问题标题】:Actionscript 3.0 Listening for a dispatched Custom EventActionscript 3.0 侦听已调度的自定义事件
【发布时间】:2014-02-09 00:31:06
【问题描述】:

我在使用侦听器捕获自定义事件时遇到了一些问题。

我有许多称为键的对象。每个键在被点击时都会发送一个自定义事件,如下所示:

public class Key extends Sprite 
{
    private var letter:String;
    public static const CLICKED:String = "clicked";

    private function keyClicked(e:MouseEvent):void {
        this.removeEventListener(MouseEvent.CLICK, keyClicked, false);
        this.mouseEnabled = false;
        dispatchEvent(new Event(CLICKED));
    }
}

所有键都是键盘对象的子级。键盘对象的父对象之一具有如下事件侦听器:

addEventListener(Key.CLICKED, keyboardGuess);

调用

public function keyboardGuess(e:Event):void {
        trace("event received");
        var letter:String = e.target.getLetter();
        trace(letter);
    } //there will be other functionality in here when I get it listening

但是,虽然我可以说我已成功调度事件,但我的侦听器从未接听它。我已经为此疯狂了一个多小时;你能帮我弄清楚这是怎么回事吗?

【问题讨论】:

    标签: actionscript-3 events


    【解决方案1】:

    自定义事件的气泡值应该为真,这样包含 Key 的对象才能接收到该事件。如果气泡值为 false,则只有派发事件的对象才能接收到事件,比如你的 Key。

    关于bubbles

    试试

    dispatchEvent(new Event(CLICKED, true));
    

    【讨论】:

    • dispatchEvent 不默认气泡为真?
    • 不,因为我正在调度一个默认为 false 的新事件,这就是我在 API 中找不到它的原因;我正在查看 dispatchEvent,而不是事件构造函数。这正好解决了我的问题。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    • 2015-01-05
    • 1970-01-01
    • 1970-01-01
    • 2018-08-28
    • 1970-01-01
    相关资源
    最近更新 更多