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

FLEX: Public Static Constant not imported, undefined

我正在尝试更新由一个主文件和一个导入的 AS3 class 组成的小型 Flex AS3 "project"。不幸的是,在编译期间我收到错误 1120:Access of undefined 属性 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 的 class,为什么它不起作用?

The class where the constant DEBUG is defined should be being imported so why isn't it working?

因为他们没有任何关系

DEBUG::version

static public const DEBUG          : int = 0;

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

语法中有两个提示:

  1. :: name qualifier 运算符位于命名空间之后,因此无论 DEBUG 是什么,它都是一个命名空间,而 public static const 不是(它是一个 int)
  2. A 属性 version 被访问。 public static const 不 有这么一个属性.

您正在查看的是 conditional compilation,它(除其他外)允许您指定值并将它们传递给编译器以执行编译过程。

You can also pass Strings and Numbers to the application and use them as inline constants

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

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

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

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