我似乎无法让重置正常工作。我尝试了很多东西,最后我尝试的最近的事情是双重 for 循环,通过并在屏幕上搜索 Sprite 并将其删除。不过,这会导致力量关闭。如果有人有更好更简单的方法来重置所有 Sprite 的屏幕(只要让它们离开屏幕,计时器就会重置)。除了添加的 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;
}
这是日志
06-05 17:49:36.345: 错误/AndroidRuntime (5390): 致命异常: Thread-11 06-05 17:49:36.345: 错误/AndroidRuntime (5390): java.lang.NullPointerException 06-05 17:49:36.345: 错误/AndroidRuntime (5390): 在 com.game.Game.resetGame (Game.java:269) 06-05 17:49:36.345: 错误/AndroidRuntime (5390): 在 com.game.Game.gameOver (Game.java:312) 06-05 17:49:36.345: 错误/AndroidRuntime (5390): 在 com.game.Game.run (Game.java:218) 06-05 17:49:36.345:错误/AndroidRuntime(5390):在 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: 错误/网络共享 (1086): 试图删除未知的 iface (usb0),忽略
谢谢
最佳答案
空指针攻击:
我建议添加一个
if(zom1 != null && zom1.isCollision(W,H)){
if(normZombie != null && normZombie.remove(zom1)
(抱歉不确定 Game.java 中的第 269 行
关于你解决问题我不确定你试图用上面的代码完成什么
如果 normZombie 是一个列表为什么不这样做
normZombie.removeAll();
如果你的问题是你不想再重复它们,那么在你的渲染循环中:
paintOrRender(...){
if(displayZombiesBoolean){
for(Zombies z : normZombies){
z.show(...);
}
}
希望对你有帮助
杰森
关于java - 清除所有 Sprite 的屏幕以进行重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6246966/