AS3 TypeError:错误#1007:尝试对非实例化

出于某种原因,我无法得到这个工作(严重简化的代码失败):

package com.domain {
    public class SomeClass {
        private static var helper:Helper = new Helper();
    }
}

class Helper {
}

它编译,但首次访问SomeClass抛出:

TypeError: Error #1007: Instantiation attempted on a non-constructor.
    at com.domain::SomeClass$cinit()
    ...

+1给达伦。 另一种选择是将Helper类移动到文件的顶部

class Helper {
}

package com.domain {
    public class SomeClass {
        private static var helper:Helper = new Helper();
    }
}

非构造函数错误是编译器说'你已经为一个我尚未见过的类调用过构造函数'的尴尬方式; 如果它有点聪明,它可以在抱怨...... mehhh之前检查内部类的文件(编译单元)

看到你给你的静态变量private访问,显然你打算只在内部使用的实例SomeClass (假设;可以传递出一个返回值)。

下面的解决方案将静态var的创建推迟到内部类被初始化的时候,也就是说当调用Helper.cinit() ,而不是在Helper不存在时调用SomeClass.cinit()

package com.domain {
    public class SomeClass {

        public function doSomething(param:*):void {
            // ... use Helper.INSTANCE
        }

    }
}

class Helper {
    public static const INSTANCE:Helper = new Helper();
}

我认为它不能与Helper和SomeClass在同一个文件中一起工作。 当初始化SomeClass时,Helper类尚未初始化,因此无法创建Helper对象。

将助手移到单独的文件应该可以解决问题。

链接地址: http://www.djcxy.com/p/60603.html

上一篇: AS3 TypeError: Error #1007: Instantiation attempted on a non

下一篇: xsd schema not presented by wsdl