属性未定义(1120错误)

时间:2010-01-21 21:26:54

标签: flash actionscript-3

我的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 {}

这里发生了什么?

1 个答案:

答案 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() {}
}