什么时候可以访问舞台实例?

时间:2011-04-04 02:03:00

标签: flash actionscript

我正在使用Flash CS5。我在主类中声明了我的舞台上的一些实例,我想向它们附加一些事件,但是在主类构造函数时,这些实例被声明为null。

访问舞台实例的最佳做法是什么?是否有一个我可以添加的事件监听器,它会告诉我何时填充了舞台实例属性?

简单示例:

  public class bleepBloop extends MovieClip {

    public var productName:TLFTextField;

    public function bleepBloop() {
      trace( productName ); // Here it is null
    }

  }

但是,当我稍后访问productName时,它已被定义。

1 个答案:

答案 0 :(得分:1)

编辑:我回答了一个不同的问题......抱歉!希望这能回答你的实际问题。

一旦跳转到实际包含该子节点的帧,就应该初始化MovieClip中的舞台实例:

trace(productName); // will trace null if productName isn't on the current frame
gotoAndStop(frameWithProductName);
trace(productName); // should now be initialized (when publishing for Flash Player 10+)

如果实例位于第1帧,则应该在构造函数中初始化它们并立即访问它们。否则,一种解决方案是放置一些时间轴代码,在实例出现的帧上添加所需的侦听器。请注意,这些实例实际上会在它们消失并重新出现时重新创建(当您离开并重新进入该帧时),因此在这种情况下您必须读取您的侦听器。将侦听器代码放在该帧上将处理此问题。

或者,你可以监听ADDED_TO_STAGE事件何时触发您感兴趣的特定对象:

public function bleepBloop() {
    addEventListener(Event.ADDED_TO_STAGE, onAddedToStage, true); // true to listen for children (capture phase)
}

private function onAddedToStage(event:Event):void {
    if(event.target == productName) {
        // add listeners
    }
}