我在ActionScript 3中使用Vector结构来存储对自定义类的引用。出于性能原因,我的Vector是固定长度的,也因为它需要将1:1映射到另一个数据结构。
我正在试图弄清楚如何从这个固定列表中“删除”一个元素。我不希望Vector的长度发生变化,我只希望该元素的值为“null”。或者更具体地说,当我测试该元素的真实性时(例如:if(myVector [index]){//做某事......}),我希望该元素的测试失败,因为它是“空的”。
很自然地,我尝试过:
myVector[index] = null;
但是会抛出TypeError,就像
一样myVector[index] = Vector.<MyClass>([]);
那么“清空”Vector元素的过程是什么?
答案 0 :(得分:1)
如果你收到:
TypeError:错误#1009:无法访问 null对象的属性或方法 参考
比你可能没有将你的类添加到你想要管理的对象(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]
答案 1 :(得分:1)
index
变量一定有问题,因为
myVector[0] = null;
我尝试时,不会抛出TypeError。 index
是int还是uint?