2011-03-22 90 views
0

我有两个ArrayUtil我需要从同一个类访问的类 - 它们都来自外部库并有不同的代码,所以我不能将它们合并。如何区分在as3中具有相同名称的两个导入?

如何在代码中消除歧义?

我试着做com.adobe.utils.ArrayUtil内联,并且保留现有的导入,但是导致了undefined property com错误。

干杯

回答

3
// In main class/timeline etc 

import package1.*; 
import package2.*; 

var a1:package1.A = new package1.A(); 
var a2:package2.A = new package2.A(); 

包装1类

// In package1.A.as 
package package1 { 

    public class A { 

     public function A() { 
      // constructor code 
      trace("P1"); 
     } 

    } 

} 

包2类

// In package2.A.as 
package package2 { 

    public class A { 

     public function A() { 
      // constructor code 
      trace("P2"); 
     } 

    } 

} 

输出

// Outputs 
P1 
P2 

如果您需要访问静态方法或属性。你会做类似下面的内容:

import com.adobe.utils.ArrayUtil; 

var a:Array = ["A", "B", "C"]; 
trace(com.adobe.utils.ArrayUtil.arrayContainsValue(a, "B")); // outputs true 
+0

有没有类似的方法来访问静态方法? (即'如果(!com.adobe.utils.ArrayUtil.arrayContainsValue(monthNames,“total”))') – RodeoClown 2011-03-22 21:08:54

+0

(我刚刚发布的线是我试过的,它给了我一个错误) – RodeoClown 2011-03-22 21:34:37

+0

啊,我错过了第二次进口,所以消除歧义对班级来说并不意味着什么。谢谢! – RodeoClown 2011-03-22 21:40:53

1

这些库的名称是什么?尝试只用mx.adobe.utils.ArrayUtil作为第一个类的引用。

你可以最有可能使用的包名直接引用他们(即com.domandtom.MyUtils(打开它,你会看到它在类文件的顶部)定义。

+0

我尝试这样做,我只是得到一个错误说“未定义的属性COM”(我想引用'com.adobe.utils.ArrayUtil.arrayContainsValue() ') – RodeoClown 2011-03-22 21:08:15

+0

我不知道你的文件夹结构是什么。在你的包“com”文件夹中,你有com.adobe库吗?看起来你有帮助,虽然 – 2011-03-23 19:05:24

+0

感谢多米尼克。原来我错过了进口。 – RodeoClown 2011-03-23 23:27:20

相关问题