我认为这是一项直截了当的工作,但事实并非如此 :(。您现在可以看到我是如何设计代码的。请帮助
问问题
125 次
3 回答
4
将事件侦听器添加到child3
. child2.child3
不会工作。
child3 = new Child3();
child3.addEventListener("ShipCreated", onShipCreated);
child2.addChild(child3);
如果您想访问您的孩子,child2
则必须使用getChildAt
或getChildByName
获取它。例如 :
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 回答