[英]Why does my app crash at this point?
每當我的游戲得分達到3時,它就會崩潰。 經過大量的審查后,我注意到它與這段代碼有關,因為我將其刪除,然后它不再崩潰。 最奇怪的是,它只會在播放一段時間后崩潰。 我可以玩一個新游戲,它將超過3個並且不會崩潰。 我不明白為什么它只會偶爾出現一次。然后我得到的錯誤代碼是:
斷言失敗:(m_nodes [proxyId] .IsLeaf()),函數DestroyProxy,文件/Users/badlogic/jenkins/workspace/libgdx-mac/gdx/jni/Box2D/Collision/b2DynamicTree.cpp,第127行。
碼:
int j = Asteroids.bodies.size;
if(j == 9 && p == 0) {
score ++;
p ++;
store.coins.putInteger("coins", (store.coins.getInteger("coins", 0) + 1));
}
if(j == 10 && p == 1) {
score ++;
p ++;
store.coins.putInteger("coins", (store.coins.getInteger("coins", 0) + 1));
}
if(j == 11 && p == 2) {
score ++;
p ++;
store.coins.putInteger("coins", (store.coins.getInteger("coins", 0) + 1));
}
try {
if(j > 11) {
for(int i = 0; i < Asteroids.bodies.size - 11; score ++) {
world.destroyBody(Asteroids.bodies.get(i));
Asteroids.bodies.removeIndex(i);
store.coins.putInteger("coins", (store.coins.getInteger("coins", 0) + 1));
}
}
}
catch(NullPointerException e) {
System.out.println("oops");
}
}
為什么它與分數相關:因為您僅在asteroids.bodies.size> 11時才開始運行代碼-大概這僅在您將某物拍完后才會發生。
通常,從當前正在迭代的集合中刪除項目是不安全的-如果沒有聲明asteroids.bodies,就很難確定這是否引起了您的問題。 但是遵循以下原則:
while (there are more bodies than I want)
remove the first body in the list
通常用於這種情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.