【发布时间】:2015-06-20 17:46:30
【问题描述】:
由于 Flash Builder 4.7、AIR SDK 15、16 和 17、Flex SDK 4.6 中 FlexLib 项目和 AS3 Lib 项目之间的不一致性,我遇到了几个问题。
这些的共同点是 FlexLib 不允许(突出显示语法错误)构建/编译常规 AS3Lib 项目中允许的代码片段。
请注意,下面的示例是经过简化的,并且存在现实生活中的用例,即使它违反了良好做法。
包上面的内部类
internal class Before
{
public function Before(){}
}
package
{
public class Main
{
public function Main()
{
}
}
}
在 Flex 库项目中,此代码导致:
1083:语法错误:包意外。
在常规的 ActionScript 库项目中,它运行良好,没有任何警告。
数组键类型贪婪
var array:Array = [Boolean, Number, XML];
for(var c:Class in array)
{
if(c is Object) { trace('test') }
}
在 Flex 库项目中,此代码导致:
1067: 将 String 类型的值隐式强制转换为不相关的类型 类。
在常规的 ActionScript 库项目中,它运行良好,没有任何警告。
常量定义类
public static const FileClass:Class = String;
public function main():void
{
if('test' is Vector.<FileClass>)
{
trace('what?');
}
}
在 Flex 库项目中,此代码导致:
1120: 未定义属性 FileClass 的访问。
在常规的 ActionScript 库项目中,它运行良好,没有任何警告。
如果有人能说出为什么会发生这种情况或能给我一个线索来寻找解决方案,我将非常感激。
【问题讨论】:
-
在编译As3库项目时,是否使用编译器选项“启用严格类型检查”和“启用警告”?
标签: actionscript-3 flash apache-flex actionscript flash-builder