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...
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值