
我认为这是一项直截了当的工作,但事实并非如此 :(。您现在可以看到我是如何设计代码的。请帮助
将事件侦听器添加到child3. child2.child3不会工作。
child3 = new Child3();
child3.addEventListener("ShipCreated", onShipCreated);
child2.addChild(child3);
如果您想访问您的孩子,child2则必须使用getChildAt或getChildByName获取它。例如 :
child2.getChildAt(0).addEventListener(...);
虽然在这种情况下直接使用 child3 要好得多。
Child3此外,您正在从在添加事件处理程序之前发生的构造函数中调度。所以你的处理程序不会被调用。您需要在添加事件处理程序后进行调度才能使其工作。
您必须将 dispatchEvent 调用放在其他方法中,而不是在构造函数中。也许在 ADDED_TO_STAGE 处理函数上。
创建 Event 实例时,必须传递另一个参数,指示该事件将被传播(在参考文献中称为气泡)
dispatchEvent("ShipCreated", true);
感谢你们:
这解决了问题
public function Child3()
{
addEventListener(Event.ADDED_TO_STAGE, checkShip);
}
private function checkShip(e:Event):void
{
dispatchEvent(new Event("ShipCreated"));
}