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...
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章