所以我以前从未使用过Flash中的Vector,我想用自定义对象用Vector编写一个小测试应用程序。但是当我尝试启动应用程序时,我得到error 1000: Ambiguous reference to Vector
。我无法弄清楚我的生活有什么不对。我尝试不使用自定义对象,只是从在线教程中实例化一个字符串Vector,我也得到了相同的东西。
这是我得到的:
package
{
import TestPlayer; // The custom player class
import flash.display.MovieClip;
public class Vector extends MovieClip
{
private var array:Array = new Array();
private var vector:Vector.<TestPlayer>;
public function Vector()
{
array[0] = [0, 0, "Bob", false];
array[1] = [1, 0, "Frank", true];
array[2] = [2, 1, "Sarah", true];
Load();
}
private function Load():void
{
var aPlayer:Player = null;
vector = new Vector.<TestPlayer>();
try
{
var numRows:int = array.length;
for (var i = 0; i < numRows; i++)
{
aPlayer = new Player();
aPlayer.playerID = array[i][0];
aPlayer.playerName = array[i][1];
aPlayer.playerTypeID = array[i][2];
aPlayer.hasProgress = array[i][3];
vector.push(aPlayer);
}
}
catch (error:Error) { }
}
}
自定义播放器类看起来像这样:
package
{
public class TestPlayer
{
private var _playerID:int;
private var _playerName:String = "";
public function get playerID():int
{
return _playerID;
}
public function set playerID(value:int):void
{
_playerID = value;
}
public function get playerName():String
{
return _playerName;
}
public function set playerName(value:String):void
{
_playerName = value;
}
[...]
}
}
我不知道它是否重要,但我在Flash CS5中工作,我有一个空白的FLA导入该类。到目前为止没有其他错误。希望你能帮忙。如果您需要更多信息,请告诉我,谢谢。
答案 0 :(得分:2)
模棱两可的参考是因为你有一个命名冲突。您编写的类名为“Vector”,它无法与顶级类Vector
区分开来。修复很简单,避免将类命名为预先存在的类。
如果两个类都属于不同的名称空间,那么可以重用类名,只要您在调用该类时使用其完全限定名称。
假设您有一个班级:
package foo.bar
{
class MovieClip
...
}
您可以按如下方式实例化两种类型的MovieClip:
flashMovieClip = new flash.display.MovieClip();
myMovieClip = new foo.bar.MovieClip();
不幸的是,您的Vector
和flash Vector
都存在于顶级命名空间中,因此(AFAIK)如果不重命名您的课程,就无法消除歧义。为简单起见,避免命名冲突,你应该是金色的。