顶级包中actionscript类的显式引用

时间:2014-02-23 13:07:26

标签: actionscript-3 actionscript flash-builder asc2

如果在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',同时编写导致此类问题的测试。

1 个答案:

答案 0 :(得分:0)

尝试删除此行

 import mypackage.Array;

所以你不导​​入这个自定义数组,你总是使用完全限定名,我没有测试它,但这应该修复它。

编辑: 我测试了这个,是的,你必须添加这个导入行,它不会工作,但我无法重现错误,我可以使用和自定义数组和全局数组罚款,没有问题/错误或warrning。

EDIT2: 这对我也有用,你能测试一下吗?

var globalArray:Class=(getDefinitionByName('Array') as Class);
var arr2:*=new globalArray();
arr2.push("test");
trace(arr2);