2012-09-25 5 views
13

काम नहीं करता है जब कोई खिलाड़ी स्क्रीन को छूता है, और जब नहीं पढ़ता है।ऑन टचवेन्ट में, 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

^यह स्क्रीन फॉर्म LogCat है। आप देख सकते हैं: यह केवल ACTION_DOWN है, लेकिन ACTION_UP के बारे में कुछ भी नहीं है। कक्षा विस्तारित है दृश्य:

public class MainClass extends SurfaceView implements SurfaceHolder.Callback { 

क्या आप मेरी मदद कर सकते हैं?

संपादित करें: मेरा खेल इस ट्यूटोरियल पर आधारित है: http://www.droidnova.com/2d-tutorial-series-part-v,848.html

उत्तर

45

मेरा अनुमान है, कि super.onTouchEvent false लौट जाता है के रूप में जो कुछ भी सुपर क्लास आप कॉल कर रहे परवाह नहीं करता स्पर्श घटना के बारे में।

यदि आप false पर टचएवेंट पर वापस आते हैं, तो एंड्रॉइड ओएस आपको उस इशारे में किसी और घटना के बारे में सूचित नहीं करेगा। यदि आप टच इवेंट जानकारी (उदाहरण के लिए ACTION_UP) प्राप्त करना जारी रखना चाहते हैं, तो आपको पहले ACTION_DOWN ईवेंट में true वापस करना होगा।

+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

"पेटी" का समाधान मेरे लिए काम करता है! कुछ वाक्यविन्यास त्रुटियों, यहाँ ठीक किया सिवाय:

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

धन्यवाद एक बहुत।

संबंधित मुद्दे