【问题标题】:Properties undefined at their definition (1120 error)定义时未定义的属性(1120 错误)
【发布时间】:2011-01-07 22:55:32
【问题描述】:

我的 ActionScript 中出现了一个真正奇怪的未定义错误(此处简化了代码):

包裹 { 公共类主要扩展雪碧{ 私有函数测试(){ var testVar:Number = 10; } } }

这会返回一个错误:1120: Access of undefined property testVar 在第 4 行。

如果我没看错,那就是抱怨我试图定义的变量尚未定义。因此我很困惑。

当函数 Test 前面有一个巨大的对象声明时,这一切都有效,但现在我已经将它移到一个单独的类中,我在类的每个方法中的每个单个变量声明中都会收到此错误。


更新:

事实证明,最后添加的类定义导致了问题——但我不知道为什么。

添加

A类{} B类{}

到 .as 文件的末尾会导致所有错误发生,但仅包含 class A {}class B {} 会使所有错误消失。

更令人困惑的是,一个更好的解决方案是这样的:

C类{} A 类扩展 C {} B 类扩展 C {}

这是怎么回事?

【问题讨论】:

    标签: flash actionscript-3


    【解决方案1】:

    所以,我假设您为此使用 CS4,对吗? CS4 的编译器中存在一个不允许您执行此操作的错误……前提是您将任何内容声明为局部变量。您可以使 testVar 成为类实例变量,它会起作用。

    如果你想在你的包之外添加一个类,那么你可以这样做并且仍然使用局部变量。但是,添加第二个会使编译器窒息。

    顺便说一句,这在 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() {}
    }
    

    【讨论】:

      猜你喜欢
      • 2012-06-05
      • 1970-01-01
      • 2010-12-16
      • 2016-03-16
      • 1970-01-01
      • 2015-01-13
      • 1970-01-01
      • 2012-04-08
      • 2015-07-12
      相关资源
      最近更新 更多