我正在创建一个简单的点击游戏,在屏幕上产生敌人,当用户点击它们时,他们获得点数并且敌人被摧毁。我这样做是为了在用户点击它们时使图像框可见并且不可见。他们运行在一个计时器上,并有一个不断的产卵循环。Android工作室:TimerTask
目前我想实现一种方式,用户将开始失去健康。所以我想检查一下敌人的影像箱是否可见,如果是的话,玩家会慢慢失去健康。
我很困惑创建一个计时器任务,可以刷新此作业的用户界面。如果某些图像可见或不可见,我希望能够不断检查用户界面。我已经从我自己的研究中做了一个开始,但是如果这个实现,游戏在加载时会崩溃。
定时刷新UI:
private Timer mTimer1;
private TimerTask mTt1;
private Handler mTimerHandler = new Handler();
public void onStart() {
mTimer1 = new Timer();
mTt1 = new TimerTask() {
public void run() {
mTimerHandler.post(new Runnable() {
public void run() {
//TODO
final TextView health = (TextView) findViewById(R.id.Health);
health.setText("Health: " + health2);
//Enemy ImageViews
final ImageView enemy1 = (ImageView) findViewById(R.id.enemy1);
final ImageView enemy2 = (ImageView) findViewById(R.id.enemy2);
final ImageView enemy3 = (ImageView) findViewById(R.id.enemy3);
final ImageView enemy4 = (ImageView) findViewById(R.id.enemy4);
//sets imageViews into array
final ImageView[] enemies = new ImageView[4];
enemies[0] = enemy1;
enemies[1] = enemy2;
enemies[2] = enemy3;
enemies[3] = enemy4;
boolean running = true;
while (running) {
if (enemy1.getVisibility() == View.VISIBLE) {
int damage = 1;
health2 = health2 - damage;
health.setText("Health:" + health2);
} else {
// Either gone or invisible
}
if (enemy2.getVisibility() == View.VISIBLE) {
int damage = 1;
health2 = health2 - damage;
health.setText("Health:" + health2);
} else {
// Either gone or invisible
}
if (enemy3.getVisibility() == View.VISIBLE) {
int damage = 1;
health2 = health2 - damage;
health.setText("Health:" + health2);
} else {
// Either gone or invisible
}
if (enemy4.getVisibility() == View.VISIBLE) {
int damage = 1;
health2 = health2 - damage;
health.setText("Health:" + health2);
} else {
// Either gone or invisible
}
}
}
});
}
};
mTimer1.schedule(mTt1, 1, 5000);
}
}
这是我创建的计时器任务。我想澄清一下为什么这会让我的游戏崩溃,以及如何解决这个问题。我从来没有用这种方式使用过计时器,所以如果问题很明显,那就是为什么我没有注意到它。
我在onCreate方法里面有更多的代码,如果需要的话可以发布。感谢您为这个起居者提供的所有帮助和建议。
崩溃:
发布崩溃日志 –