我正在尝试更新由一个主文件和一个导入的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的类,为什么它不起作用?
答案 0 :(得分:0)
应该导入定义常量DEBUG的类,以便它为什么不起作用?
因为他们彼此无关。
DEBUG::version
和
static public const DEBUG : int = 0;
代码中有两个不相关的部分。
语法中有两个提示:
DEBUG
是什么,它都是命名空间,而公共静态const不是(它是int
)version
。 public static const没有
有这样的财产。您正在查看的是conditional compilation,其中(除其他外)允许您指定值并将它们传递给编译器以执行编译过程。
您还可以将字符串和数字传递给应用程序,并将它们用作内联常量
在您的情况下,您希望在编译器参数中定义版本常量。像这样:
-define+=DEBUG::version,"5"
这可能是因为版本号由某些构建脚本(make,ant,等等)维护,因此将此信息传递给编译器。
我强烈建议您先与开发此项目的开发人员联系,以了解该项目的构建过程是如何工作的。