0

在此处输入图像描述

我认为这是一项直截了当的工作,但事实并非如此 :(。您现在可以看到我是如何设计代码的。请帮助

4

3 回答 3

4

将事件侦听器添加到child3. child2.child3不会工作。

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

如果您想访问您的孩子,child2则必须使用getChildAtgetChildByName获取它。例如 :

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

虽然在这种情况下直接使用 child3 要好得多。

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

于 2013-04-28T19:33:22.400 回答
1

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

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

dispatchEvent("ShipCreated", true);
于 2013-04-28T19:34:09.790 回答
0

感谢你们:

这解决了问题

    public function Child3()
    {
        addEventListener(Event.ADDED_TO_STAGE, checkShip);
    }
    private function checkShip(e:Event):void
    {
        dispatchEvent(new Event("ShipCreated"));
    }    
于 2013-04-28T20:01:46.620 回答