私は画面上の敵を生成する簡単なクリックゲームを作成しています。ユーザーがクリックするとポイントを獲得し、敵が破壊されます。私は、イメージボックスをユーザーがクリックすると表示され、非表示にすることでこれを行います。彼らはタイマーで実行し、産卵の一定のループを持っています。Androidスタジオ:TimerTask
現在、私はユーザーが健康を失い始める方法を実装したいと思います。だから私は敵のイメージボックスが見えるかどうかをチェックしたい、そうであれば、プレイヤーはゆっくりと健康を失うだろう。
このジョブのUIを更新できるタイマータスクを作成するのと混同しています。一部の画像が表示されているかどうかを確認しながら、UIを常に確認できます。私は自分自身の研究からこれを開始しましたが、これが実装されていればロード時にゲームがクラッシュします。 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メソッドの中にもっと多くのコードを持ち、必要に応じて投稿できます。この初心者のためのすべての助けと助言をありがとう。
クラッシュ:あなたはsuper.onStartを(呼び出す必要があり、エラーメッセージに基づいて
クラッシュログを投稿する –