如何解决在接口中使用常量作为默认参数值:IDE可以,但是mxmlc失败吗?
| 该代码似乎可以在IDE中很好地编译,但是命令行编译器(SDK 4.5 mxmlc.exe)报告“参数初始化程序未知或不是编译时常量。” senocular提供了一个很好的解释和一个可能的解决方法,但我希望有更高级的功能(例如命令行指令)。package {
public class Constants {
public static const CONSTANT : int = 0;
}
}
package {
public interface IInterface {
function foo( param : int = Constants.CONSTANT ) : void;
}
}
package
{
public class Concrete implements IInterface
{
public function foo(param:int=Constants.CONSTANT):void
{
}
}
}
解决方法
根据Senocular,这全都与编译顺序有关。没有明确的方法来设置此顺序。
您可以使用定义编译器选项来定义内联常量,以避免出现此问题。
另一种方法是创建一个包含常量的库。库包含在用户类之前。
要创建库,请使用组件编译器:
compc -output lib\\Constants.swf -source-path src -include-classes Constants
编译应用程序时,包括该库:
mxmlc -include-libraries lib\\Constants.swf -- src\\Main.as
只是不要忘记在常量更改时重新编译该库,或者使用处理该问题的构建脚本。
对示例代码的简短注释:
接口不需要使用该常量,任何值都可以使用,并且对实现类具有相同的效果。
编程AS3-接口
实现此类函数声明的方法必须具有默认参数值,该默认参数值与接口定义中指定的值属于同一数据类型,但是实际值不必匹配。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。