我似乎无法让重置工作正常。我尝试了很多东西,最后我尝试的最新的东西是双循环通过并在屏幕上搜索精灵并删除它。这导致力量接近。如果有人有一个更简单的方法来重置所有精灵的屏幕(只是让他们离开屏幕定时器正在重置正常)。除了添加的for循环外,重置都有效。
public void resetGame() {
for(float w=0; w<width; w+=1){
for(float h=0; h<height; h+=1){
if (zom1.isCollision(w, h))
normZombie.remove(zom1);
}
}
}
这是来自僵尸类的碰撞。
public boolean isCollision(float x2, float y2) {
return x2 > x && x2 < x + width && y2 > y && y2 < y + height;
}
这是logcat
06-05 17:49:36.345:ERROR / AndroidRuntime(5390):致命异常:Thread-11 06-05 17:49:36.345:ERROR / AndroidRuntime(5390):java.lang.NullPointerException 06-05 17:49:36.345:ERROR / AndroidRuntime(5390):at com.game.Game.resetGame(Game.java:269) 06-05 17:49:36.345:ERROR / AndroidRuntime(5390):at com.game.Game.gameOver(Game.java:312) 06-05 17:49:36.345:ERROR / AndroidRuntime(5390):at com.game.Game.run(Game.java:218) 06-05 17:49:36.345:ERROR / AndroidRuntime(5390):at com.game.GameLoopView $ GameLoopThread.run(GameLoopView.java:56) 06-05 17:54:37.853:ERROR / yahoo.push.service(1492):mail_38_mail与服务器通话时出现异常!但是我们已经处于断开状态,忽略它。 06-05 17:55:00.009:ERROR / Tethering(1086):试图删除未知的iface(usb0),忽略
由于
答案 0 :(得分:1)
空指针Eception:
我建议添加一个
if(zom1 != null && zom1.isCollision(W,H)){
if(normZombie != null && normZombie.remove(zom1)
(抱歉不确定哪个是Game.java中的第269行
关于你删除问题我不确定你想用上面的代码完成什么
如果normZombie是List,为什么不这样做
normZombie.removeAll();
如果你的问题是你不想再将它们放在你的redering循环中了:
paintOrRender(...){
if(displayZombiesBoolean){
for(Zombies z : normZombies){
z.show(...);
}
}
希望这会有所帮助
杰森