我的ActionScript中有一个非常奇怪的未定义错误(此处简化代码):
package { public class Main extends Sprite { private function Test() { var testVar:Number = 10; } } }
这会在第4行返回错误:1120: Access of undefined property testVar
。
如果我正确地阅读,它抱怨我正在尝试定义的变量尚未定义。因此我的困惑。
当函数Test前面有一个巨大的对象声明时,这一切都有效,但是现在我把它移到了一个单独的类中,我在类的每个方法中为每个变量声明得到了这个错误。 / p>
更新
事实证明最后添加的类定义导致了问题 - 但我不知道为什么。
添加
class A {} class B {}<。>到.as文件的末尾导致所有错误发生,但仅包括
class A {}
或class B {}
会导致所有错误消失。
更令人困惑的是,更好的解决方案是:
class C {} class A extends C {} class B extends C {}
这里发生了什么?
答案 0 :(得分:1)
所以,我假设您正在使用CS4,对吗? CS4的编译器中存在一个错误,它不允许您执行此操作...前提是您将任何内容声明为局部变量。你可以让testVar成为一个类实例变量,它可以工作。
如果要在包外添加单个类,则可以执行此操作并仍使用局部变量。但是,添加秒将使编译器阻塞。
BTW,这在CS3中有效,但在将它用于辅助类(包内的主类将使用的类)时通常被认为是一个坏主意。)我唯一一次使用它是为了声明一个类用作单例构造函数的参数,例如:package {
public class MySingletonClass extends Object {
private static var _instance:MySingletonClass ;
public function MySingletonClass ($singletonEnforcer:SingletonEnforcer) {}
public static function getInstance(): MySingletonClass{
if (MySingletonClass._instance == null) {
MySingletonClass._instance = new MySingletonClass(new SingletonEnforcer());
}
return MySingletonClass._instance;
}
public static function get instance(): MySingletonClass{
return MySingletonClass.getInstance();
}
}
}
class SingletonEnforcer extends Object {
public function SingletonEnforcer() {}
}