显式引用***包中的 actionscript 类

Posted

技术标签:

【中文标题】显式引用***包中的 actionscript 类【英文标题】:Explicit reference to actionscript class in top level package 【发布时间】:2014-03-24 23:39:04 【问题描述】:

如果您在 actionscript 中定义一个与***包中的类(例如 Array)同名的类,则似乎无法显式引用***包中的类。

更新:此问题仅出现在带有新 ASC 2.0 编译器的 Flash Builder 4.7 中,使用带有“旧”Flex SDK 的 Flash Builder 4.6 可以正常工作。

例子:

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】:

尝试删除此行

 import mypackage.Array;

所以你不要导入这个自定义数组并且你总是使用完全限定的名称,我没有测试它,但这应该可以解决它。

编辑: 我对此进行了测试,是的,您必须添加此导入行,它不起作用,但我无法重现错误,我可以使用自定义数组和全局数组,没有问题/错误或警告。

编辑2: 这对我也有用,你也可以测试一下吗?

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

【讨论】:

感谢您的建议,但这不起作用。我已经尝试过了,该更改会给我另一个错误:“访问可能未定义的属性 mypackage。” (我认为这可以在 java 中工作,但 AS3 的行为不同,即使您在代码中明确命名它们也需要您导入类) 您使用的是哪个编译器? (我正在使用 AIR 4.0 Beta SDK 在 flash builder 4.7 中对此进行测试) 我正在使用带有 AIR 3.y SDK 的 FB4.6(我不是 100% 确定版本) 我检查了 4.6 和 Flex SDK 4.6.0 - 在这种情况下它可以工作,所以这个问题可能已经在 Flash Builder 4.7 或 ASC 2.0 编译器中引入 (helpx.adobe.com/flash-builder/…)跨度>

以上是关于显式引用***包中的 actionscript 类的主要内容,如果未能解决你的问题,请参考以下文章

ActionScript包中有多个类?

纯AS3项目中如何引用fl包中的类

ActionScript 中的绑定如何工作?

显式设置 NuGet 包中定义的构建目标的顺序

怎么引用jar包中的类

在 Actionscript 2 中立即引用影片剪辑类实例