AS3:如何捕获子类发送的事件?

时间:2013-04-28 19:29:21

标签: actionscript-3 events children

enter image description here

我认为这是一项直接的工作,但它不是:(。 你现在可以看到我如何设计我的代码。 请帮忙

3 个答案:

答案 0 :(得分:4)

将事件监听器添加到child3child2.child3无效。

child3 = new Child3();
child3.addEventListener("ShipCreated", onShipCreated); 
child2.addChild(child3);

如果您想要访问child2的孩子,则必须使用getChildAtgetChildByName才能获得此项。例如:

child2.getChildAt(0).addEventListener(...);

虽然在这种情况下直接使用child3会更好。

此外,您将从Child3的构造函数调度,该构造函数在添加事件处理程序之前发生。所以你的处理程序不会被调用。您需要在添加事件处理程序后调度才能使其正常工作。

答案 1 :(得分:1)

您必须将dispatchEvent调用放在其他方法中,而不是在构造函数中。也许在ADDED_TO_STAGE处理函数上。

创建Event实例时,必须传递另一个参数,指示事件将被传播(在引用中称为气泡)

dispatchEvent("ShipCreated", true);

答案 2 :(得分:0)

谢谢你们:

解决了这个问题

    public function Child3()
    {
        addEventListener(Event.ADDED_TO_STAGE, checkShip);
    }
    private function checkShip(e:Event):void
    {
        dispatchEvent(new Event("ShipCreated"));
    }