AS3在另一帧上导入类

时间:2012-04-15 16:43:55

标签: actionscript-3 flash

我正在使用外部AS文件来创建我的新项目,其中包括创建一个绘制的位置,因此我使用以下tutorial来获得所需内容的基本概念。

我希望应用程序正常运行并且运行顺利,直到我决定添加预加载和放大器。菜单 - 将应用程序的绘图部分放在第三帧 - 这让我犯了这个错误:

  

TypeError:错误#1009:无法访问null的属性或方法   对象参考。
   - 在Main / convertToBMD()
   - 在Main()

所以我想的不是将Main.as添加到属性下的类,而是将帧上的文件导入。使用:

var main:Main = new Main();
addChild(main);

这与它失去了与实例名称的所有连接。

Line 64 1120: Access of undefined property pencil.
Line 65 1120: Access of undefined property eraser.
Line 65 1120: Access of undefined property txt.
Line 82 1120: Access of undefined property board.
Line 83 1120: Access of undefined property board.

等.....

所以我想知道的是,有没有更好的方法来实现这一点,让它在任何框架上工作?

通过更改外部脚本中的某些内容或其他导入到框架的方式?

谢谢

1 个答案:

答案 0 :(得分:1)

问题是命名实例是MainTimeline实例的属性,它通常是该阶段的第一个子实例。属性是Main类(不再是)的属性。

因此,当您想要使用Main访问这些属性时,您可以执行以下操作:

var timeline:DisplayObject = stage.getChildAt(0);
var pencil:DisplayObject = timeline["pencil"];

// do stuff with 'pencil'
pencil.x = 500;
...

注意:这假设Main将设置stage属性,一旦您通过addChild(main);添加属性,就应该如此。但这意味着,在Main的构造函数中,您将无法访问stage属性以执行上述操作。如果这是一个问题,请考虑让Main在使用'铅笔'之前等待ADDED_TO_STAGE事件等等。