我可能会遗漏一些东西。我认为这将是一个常见问题,但几天来在网络上进行的广泛搜索并没有找到我需要的答案。我希望制作一个独立的电影剪辑,无论放置在哪里都可以使用。但是,从扩展影片剪辑的类中访问影片剪辑中定义的实例似乎很困难。
虽然我在 Flash Actionscript 2 (AS2) 中进行编码,但我想知道 AS3 是否存在同样的问题。
在以下场景中,如何访问实例“圈子”?
主时间轴上的影片剪辑具有实例名称“square”。Square.as 中定义的类 Square 扩展了该影片剪辑。在影片剪辑内部,另一个影片剪辑放置在第一帧上,实例名称为“circle”。在第一帧上还声明了一个变量var myName:String = "my name"
。以下代码无法编译:
class Square extends MovieClip {
function Square() {
trace("Square.constructor, circle: " + circle);
trace(" --- myName: " + myName);
}
}
编译器错误:( There is no property with name 'circle'.
与 myName 相同)。
添加this.
参考没有帮助。显然,编译器正在类定义中寻找变量。
使用_level0.square.circle
有效,但这需要类知道它自己的实例路径。虽然_level0.square.myName
不会产生编译器错误,但它给出的值为undefined
.
在构造函数以外的方法中引用这些变量会导致相同的编译器错误。
非常感谢您的帮助。