如果在actionscript中定义一个与顶级包(例如Array)中的类同名的类,则似乎无法在顶级包中显式引用该类。
更新:此问题仅出现在Flash Builder 4.7中,使用新的ASC 2.0编译器,使用Flash Builder 4.6,并使用“旧的”Flex SDK。
示例:
package
{
import flash.display.Sprite;
import mypackage.Array;
public class AS3Problem extends Sprite
{
public function AS3Problem()
{
var myOwnArray:mypackage.Array = new mypackage.Array();
// The line below will cause a compile error
// 'Ambiguous reference to Array'
var flashArray:Array = new Array();
}
}
}
我知道这个问题的简单解决方案是不创建名称与as3顶级包类/函数相同的类,但我对如何以某种方式“修复”这个问题很感兴趣通过明确提及此包或其他方式。
对于那些感兴趣的人,我偶然从hamcrest-as3导入'Array',同时编写导致此类问题的测试。
答案 0 :(得分:0)
尝试删除此行
import mypackage.Array;
所以你不导入这个自定义数组,你总是使用完全限定名,我没有测试它,但这应该修复它。
编辑: 我测试了这个,是的,你必须添加这个导入行,它不会工作,但我无法重现错误,我可以使用和自定义数组和全局数组罚款,没有问题/错误或warrning。
EDIT2: 这对我也有用,你能测试一下吗?
var globalArray:Class=(getDefinitionByName('Array') as Class);
var arr2:*=new globalArray();
arr2.push("test");
trace(arr2);