显式引用***包中的 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 类的主要内容,如果未能解决你的问题,请参考以下文章