如何从AS3中的类中访问主时间轴上的变量



我已经看到了同一问题的几篇文章,没有明确的答案。

主时间轴:

var mynum:Number = 0;

如何从外部类文件中的代码访问/更改此变量?我尝试的一切都会返回"实例不存在错误"

属于显示树的一部分(直接在舞台上或作为舞台上任何DisplayObjectContainer s的后代)的所有DisplayObject S都可以访问root,这要么是指:

  1. MainTimeline如果没有文档类。
  2. 文档类(如果存在)。

root铸造为MovieClip将使它被视为dynamic,这意味着您在主时间轴上声明的变量和函数将在没有编译时错误的情况下访问,这意味着您可以做到这一点:

trace(MovieClip(root).mynum);

由于要在执行代码时必须在舞台上,因此不能将其直接放置在用addChild动态添加的对象的构造函数中。但是,您可以利用ADDED_TO_STAGE事件等待对象首先添加到舞台上:

public class Example extends Sprite {
  public function Example() {
    addEventListener(Event.ADDED_TO_STAGE, added);
  }
  protected function added(event:Event):void {
    trace(MovieClip(root).mynum);
  }
}