向量上的AS3错误1000

时间:2011-04-05 16:31:00

标签: actionscript-3 flash-cs5

所以我以前从未使用过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导入该类。到目前为止没有其他错误。希望你能帮忙。如果您需要更多信息,请告诉我,谢谢。

1 个答案:

答案 0 :(得分:2)

模棱两可的参考是因为你有一个命名冲突。您编写的类名为“Vector”,它无法与顶级类Vector区分开来。修复很简单,避免将类命名为预先存在的类。

如果两个类都属于不同的名称空间,那么可以重用类名,只要您在调用该类时使用其完全限定名称。

假设您有一个班级:

package foo.bar
{
  class MovieClip
  ...
}

您可以按如下方式实例化两种类型的MovieClip:

flashMovieClip = new flash.display.MovieClip();
myMovieClip = new foo.bar.MovieClip();

不幸的是,您的Vector和flash Vector都存在于顶级命名空间中,因此(AFAIK)如果不重命名您的课程,就无法消除歧义。为简单起见,避免命名冲突,你应该是金色的。