Actionscript 3 AS3-向量结构中的零元素

Actionscript 3 AS3-向量结构中的零元素,actionscript-3,vector,null,structure,Actionscript 3,Vector,Null,Structure,我在ActionScript3中使用向量结构来存储对自定义类的引用。出于性能原因,我的向量是固定长度的,还因为它需要将1:1映射到另一个数据结构 我试图弄清楚如何从这个固定列表中“删除”一个元素。我不希望向量的长度改变,我只希望该元素的值为“null”。或者更具体地说,当我测试该元素的真实性时(例如:if(myVector[index]){//do something…}),我希望该元素的测试失败,因为它是“空的” 很自然,我试过: myVector[index] = null; 但这会抛出一

我在ActionScript3中使用向量结构来存储对自定义类的引用。出于性能原因,我的向量是固定长度的,还因为它需要将1:1映射到另一个数据结构

我试图弄清楚如何从这个固定列表中“删除”一个元素。我不希望向量的长度改变,我只希望该元素的值为“null”。或者更具体地说,当我测试该元素的真实性时(例如:if(myVector[index]){//do something…}),我希望该元素的测试失败,因为它是“空的”

很自然,我试过:

myVector[index] = null;
但这会抛出一个类型错误,就像

myVector[index] = Vector.<MyClass>([]);
myVector[index]=Vector.([]);
那么“清空”向量元素的过程是什么呢?

如果您收到:

TypeError:错误#1009:无法访问 空对象的属性或方法 参考文献

您可能还没有将类添加到您试图管理的对象中(即:您还没有将显示对象添加到您试图使其无效的阶段)

发布更多代码可能会有所帮助,但以下类似内容应该对您有用:

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]
var spriteA:Sprite=new Sprite();
var spriteB:Sprite=新Sprite();
var spriteC:Sprite=新Sprite();
变量spritesVector:Vector.=新的[雪碧茶,雪碧茶,雪碧茶];
spritesVector.fixed=true;
跟踪(精灵向量)//[对象精灵],[对象精灵],[对象精灵]
spritesVector[1]=null;
跟踪(精灵向量)//[对象精灵],null[对象精灵]

您的
索引
变量肯定有问题,因为

myVector[0] = null;

当我尝试时,不会抛出类型错误。
index
是int还是uint?

谢谢您的回复,但我相信这是I-Type错误。关于向量中的无效类型,这就是为什么我认为null赋值是导致失败的原因。另外,请注意,您的代码中有一个语法错误-我认为您的意思是var spritesVector:Vector新载体([spriteA,spriteB,spriteC]);因此,您试图指定给向量的对象没有相同的基类型,或者从您的解释来看是这样的。这不是一个语法错误,只是一个稍微短一点的填充新向量的方法——试试看。你可以在这里读到更多:是的,事实证明你是对的。我认为是那行抛出了错误,因为当我注释掉它时,它不再给我错误,当我取消注释它时,错误又回来了。不幸的是(或者幸运的是,取决于你如何看待它),情况不再如此。myVector[index]=null不再引发错误。您可能是对的,它更多地与索引有关,而不是与空赋值有关。这很有道理。我不会接受这个答案,直到我找到它背后的确切原因。我想再看看抛出错误时“index”的值,可以帮助你找到答案。这是禁区吗?消极的不是数字吗?未定义?零本身?在这些情况下,断点通常对我帮助很大。