FLEX:公共静态常量未导入,未定义

时间:2015-04-16 20:44:54

标签: actionscript-3 flash flex

我正在尝试更新由一个主文件和一个导入的AS3类组成的小型Flex AS3“项目”。不幸的是在编译期间我收到错误 1120:访问未定义的属性DEBUG。并且编译失败。我使用了Flex SDK 4.6和Flash Builder 4.5中的mxmlc,但也遇到了同样的失败。

Flex不是我的强项,所以我希望有人可以指出错误。据我所知,这个源代码在2011年使用mxmlc编译得很好。

导入文件中的相关代码:

package {
public class krpano_as3_interface   {
    public static var instance:krpano_as3_interface = null;
    .
    .
    static public const STARTDEBUGMODE : int = 0xFF;
    static public const DEBUG          : int = 0;       

从主要的AS3文件:

package {
.
import krpano_as3_interface;
public class soundinterface extends Sprite {
    static public var krpano : krpano_as3_interface = null;
    .
    public function soundinterface() {
        if (stage == null){
        }else{
            txt.htmlText =  "krpano " + DEBUG::version + "\n\n" +
                            "<b>soundinterface plugin</b>" +
                            "\n\n(build " + DEBUG::builddate + ")";
        }
    }

如果我重命名或移动导入的文件,编译器会抱怨它丢失了。应该导入定义常量DEBUG的类,为什么它不起作用?

1 个答案:

答案 0 :(得分:0)

  

应该导入定义常量DEBUG的类,以便它为什么不起作用?

因为他们彼此无关。

DEBUG::version

static public const DEBUG          : int = 0;

代码中有两个不相关的部分。

语法中有两个提示:

  1. :: name qualifier运算符位于命名空间之后,所以无论DEBUG是什么,它都是命名空间,而公共静态const不是(它是int
  2. 访问属性version。 public static const没有 有这样的财产。
  3. 您正在查看的是conditional compilation,其中(除其他外)允许您指定值并将它们传递给编译器以执行编译过程。

      

    您还可以将字符串和数字传递给应用程序,并将它们用作内联常量

    在您的情况下,您希望在编译器参数中定义版本常量。像这样:

    -define+=DEBUG::version,"5"
    

    这可能是因为版本号由某些构建脚本(make,ant,等等)维护,因此将此信息传递给编译器。

    我强烈建议您先与开发此项目的开发人员联系,以了解该项目的构建过程是如何工作的。