AS3 - обнулять элементы в векторной структуре - PullRequest
0 голосов
/ 22 февраля 2011

Я использую векторную структуру в ActionScript 3 для хранения ссылок на пользовательский класс. Мой вектор имеет фиксированную длину по соображениям производительности, а также потому, что он должен отображать 1: 1 в другую структуру данных.

Я пытаюсь выяснить, как я "удаляю" элемент из этого фиксированного списка. Я не хочу, чтобы длина вектора изменялась, я просто хочу, чтобы значение этого элемента было "нулевым". Или, более конкретно, когда я проверяю на истинность этого элемента (например, if (myVector [index]) {// сделать что-то ...}), я хочу, чтобы этот тест провалился для этого элемента, так как он «пустой».

Естественно, я пробовал:

myVector[index] = null;

но это выдает ошибку TypeError, как и

myVector[index] = Vector.<MyClass>([]);

Так каков процесс "опустошения" элемента вектора?

Ответы [ 2 ]

1 голос
/ 22 февраля 2011

Должно быть что-то не так с вашей переменной index, потому что

myVector[0] = null;

не выдает ошибку TypeError, когда я пытаюсь это сделать.index int или uint?

1 голос
/ 22 февраля 2011

если вы получаете:

TypeError: Ошибка № 1009: невозможно получить доступ свойство или метод нулевого объекта ссылка

чем вы, вероятно, не добавили свой класс к объекту, которым пытаетесь управлять (IE: вы не добавили свои объекты Display на сцену, которую вы пытаетесь аннулировать)

размещение большего количества кода может помочь, но что-то вроде следующего должно работать для вас:

var spriteA:Sprite = new Sprite();
var spriteB:Sprite = new Sprite();
var spriteC:Sprite = new Sprite();

var spritesVector:Vector.<Sprite> = new <Sprite>[spriteA, spriteB, spriteC];
spritesVector.fixed = true;
trace(spritesVector); //[object Sprite],[object Sprite],[object Sprite]

spritesVector[1] = null;
trace(spritesVector); //[object Sprite],null,[object Sprite]
...