2012-09-25 6 views
13

プレイヤーが画面に触れたとき、またはそうでないときに私は読んでみたいと思います。 ^/ LogCatonTouchEventでは、ACTION_UPは機能しません。

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    if(event.getAction() == MotionEvent.ACTION_UP){ //ACTION UP 
     actionOnUP = true; 
     Log.v("MC", "Up"); 
    } 
    if(event.getAction() == 0){ //ACTION DOWN 
     actionOnUP = false; 
     Log.v("MC", "Down"); 
    } 
    Log.v("MC", event.getAction() + " "); 
    return super.onTouchEvent(event); 
} 

このコードは、はい、それは動作しますが、場合にのみ、プレーヤーの画面(ACTION_DOWN)に触れ、彼は画面(ACTION_UP)に触れていないとき、何も起こりませんこれは画面形式のLogCatです。ご覧のとおり、これはACTION_DOWNだけですが、ACTION_UPについては何も表示されません。 クラスが拡張されていますView:

public class MainClass extends SurfaceView implements SurfaceHolder.Callback { 

私を助けてくれますか?

EDIT:私のゲームは、このチュートリアルに基づいています:http://www.droidnova.com/2d-tutorial-series-part-v,848.html

答えて

45

私の推測では、super.onTouchEventは、あなたが気にしません呼んでいるものは何でもスーパークラスとしてfalseを、返却されていることですタッチイベントについて

falseをonTouchEventに返すと、Android OSはそのジェスチャー内のそれ以上のイベントを通知しなくなります。タッチイベント情報(例:ACTION_UP)を引き続き受信する場合は、trueを最初のACTION_DOWNイベントに戻す必要があります。

+0

はい!ありがとうございました! – user1019901

+2

あなたの問題に対する良い、完全な、有益な答えを得るには良いと感じています。 :)ありがとう@ティム! –

+0

ちょうど私が必要なもの!ありがとう! – inteist

0

試してみてください。

int action = event.getAction(); 
int code = action & MotionEvent.ACTION_MASK; 
if (code == MotionEvent.ACTION_POINTER_UP || code == MotionEvent.ACTION_UP || MotionEvent.ACTION_CANCEL) { 
+0

残念ながら、それは動作しません:/私のゲームはこれに基づいています:http://www.droidnova.com/2d-tutorial-series-part-v,848.html – user1019901

1

"petey"のソリューションが私のために働いた!ここで修正いくつかの構文エラー、除き :

int code = event.getAction() & MotionEvent.ACTION_MASK; 
if ((code == MotionEvent.ACTION_POINTER_UP) || (code == MotionEvent.ACTION_UP) || (code == MotionEvent.ACTION_CANCEL)) { 

どうもありがとうございました。