質問

ユーザーが画面に触れたときに、別の画像の上に画像を描画しようとしています。ただし、画像は、ユーザーが画面を手放すと触れてから消えるときにのみ表示されます。

これは私の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, 、そのため、指を上げるときではなく、画面に触れるとすぐにボタンが緑色に表示されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top