AS3 Ошибка 1000 в векторе - PullRequest
       0

AS3 Ошибка 1000 в векторе

0 голосов
/ 05 апреля 2011

Так что я никогда раньше не работал с Векторами во Flash, и я хотел написать небольшое тестовое приложение с Вектором, используя пользовательский объект. Но я получаю: 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 Ответ

2 голосов
/ 05 апреля 2011

Неоднозначная ссылка - потому что у вас есть конфликт имен. Класс, который вы написали, называется «Вектор», и его нельзя отличить от класса верхнего уровня Vector. Исправление простое, избегайте называть ваши классы так же, как ранее существовавший класс.

Если оба класса принадлежат отдельным пространствам имен, вы можете повторно использовать имена классов при условии, что вы используете их полное имя при каждом вызове класса.

Предположим, у вас есть класс:

package foo.bar
{
  class MovieClip
  ...
}

Вы можете создать экземпляры обоих типов мувиклипов следующим образом:

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

К сожалению, и ваша Vector, и вспышка Vector существуют в пространстве имен верхнего уровня, поэтому (AFAIK) нет способа устранить двусмысленность без переименования вашего класса. Для простоты, избегайте именных коллизий, и вы должны быть золотыми.

...