as3中无法访问空对象引用的属性或方法的问题

呃,这只是给自己找bug做个记录

自己游戏界面一开始很正常,但是一旦重新初始化开始的时候就报错:

#1009:Cannot access a property or method of a null object reference

无法访问空对象引用的属性或方法,我看了看错误定位的行:
MovieClip(parent).Map[idX][idY].hasPlayer=false;

我用trace试了下输出MovieClip(parent),果然是无法找到对象

查了些资料,不将对象添加到显示列表中(使用 DisplayObjectContainer 对象的 addChild() 方法),其 stage 属性设置为 null,将生成此错误

再回到parent,
Players.push(player);
addChild(player);


这不是把它添加到显示列表了吗?为什么还有错呢?
纠结了很久,最后脑子终于反应过来了,尝试把player改成了Players[i],也就是说把数组中的实例对象添加到了现实列表。

后来用trace语句查了查数组的每次初始化长度,果然是每次数组长度都增加了,也就是说虽然player是加入了显示列表,但是后面访问用的下标却是错误的(还没加入显示列表)。
知道了问题的所在,改起来也比较方便,只要每次初始化的时候将数组清空就可以了,可以用length=0的方法
后来发现,把数组在每次初始化的时候才分配空间的话也可以达到length变为0的功能。


最后一点不理解的就是为什么我在另一个类中使用静态方法就可以访问到MovieClip(parent).Map[idX][idY].hasPlayer呢?不解......先MARK...
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章