JavaプログラミングヘルプとAndroid開発
-
22-10-2019 - |
質問
ユーザーが画面に触れたときに、別の画像の上に画像を描画しようとしています。ただし、画像は、ユーザーが画面を手放すと触れてから消えるときにのみ表示されます。
これは私のifメソッドです:
int RED = 0;
int GREEN = 1;
Graphics g = game.getGraphics();
int len = touchEvents.size();
if (RED == 0) {
ready = Assets.readybtntwo;
}
for(int i = 0; i < len; i++) {
TouchEvent event = touchEvents.get(i);
if(event.type == TouchEvent.TOUCH_UP){
updateWaiting(touchEvents);
RED +=1;
if (RED == 0)
ready = Assets.readybtntwo;
if(RED == 1)
ready = Assets.readybtngreentwo;
}
g.drawPixmap(ready, 0, 0);
}
申し訳ありませんが、Android GamesのBookから構築されたフレームワークを使用しています。しかし、それは問題ではないはずです、私は画像を永遠にとどまり、ifループを終了させたいです。
解決
ここにはロジックエラーがあります。変数のように見えます RED
上記のコードがすべてタッチイベントハンドラー内にある場合、メソッドのローカルです。これは、ユーザーが画面に触れると、リセットが0にリセットされ、再び1になることを意味します。これはおそらくあなたが望むものではありません。
それがレンダリングされているだけの理由は、G.DrawpixMapが描画キューに要素を提出するか、すぐにそれをレンダリングするかのいずれかです。ボタンを描画するこの方法は、タッチイベントがある場合にのみ描画されます!
代わりに、クラスのメンバーとしてブールのDrawGreenReadyButtonの値を持つことができます。
private boolean drawGreenReadyButton = false;
その後、その内側のifステートメントを次のように変更できます。
if(event.type == TouchEvent.TOUCH_UP){
updateWaiting(touchEvents);
drawGreenReadyButton = true;
}
タッチイベントハンドラーではなく、メインレンダリングループの内側:
if(drawGreenReadyButton) {
g.drawPixmap(Assets.readybtngreentwo, 0, 0);
} else {
g.drawPixmap(Assets.readybtntwo, 0, 0);
}
また、使用を検討してください TouchEvent.TOUCH_DOWN
それよりも TouchEvent.TOUCH_UP
, 、そのため、指を上げるときではなく、画面に触れるとすぐにボタンが緑色に表示されます。
所属していません StackOverflow