在actionscript 3中添加事件之前检查组件初始化

时间:2009-01-31 19:26:00

标签: flash actionscript-3 events

如何在动作脚本3中添加事件(释放或点击)之前检查组件(移动剪辑或按钮)isInitilazed

2 个答案:

答案 0 :(得分:1)

我可以用更一般的术语询问你正在尝试做什么?

如果您只想避免空引用错误,只需检查您用于null的引用(变量):

if (_myComponent != null)
{
    // add listeners
}

如果由于某些其他原因您确实需要知道该组件是否已在您执行此操作之前已初始化,则需要它为此分派某种事件(Flex的UIComponents调度FlexEvent.INITIALIZE事件,但我假设你没有使用Flex)或者设置一个“初始化”属性,我不太确定标准的Flash组件(我在这里看the Button documentation作为参考。)你可以当然,在实现initialized属性的情况下,为自己使用的任何组件创建一个自定义子类,但我不确定如何为任何标准Flash组件实现这一点。我也不太清楚你在这个上下文中的“初始化”是什么意思:))

答案 1 :(得分:0)

也许是这样的?

if (mcWithComponents.stage) doStuff();
mcWithComponents.addEventListener(Event.ADDED_TO_STAGE, doStuff);

private function doStuff(e:Event = null):void
{
    mcWithComponents.myButton.addEventListener(MouseEvent.CLICK, buttonClicked);
}

或者直接在movieclip的类中添加侦听器。

public function mcWithComponents() // constructor
{
    if (stage) init();
    addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
  myButton.addEventListener(MouseEvent.CLICK, buttonClicked);
}