2011-08-28 14 views
38

मेरे खेल के लिए, मैं एंड्रॉइड बैक बटन को गेम को कम करने के बजाय आपको पॉज़ मेनू पर ले जाना चाहता हूं। से मैं क्या googled है, मैं जानता हूँ कि मैंlibgdx में, मैं बैक बटन से इनपुट कैसे प्राप्त करूं?

Gdx.input.setCatchBackKey(true); 

कॉल करने की आवश्यकता लेकिन यह कैसे मैं वास्तव में बटन प्रेस के लिए जाँच करते हैं? input.isKeyDown (Keys.BACK) कुछ भी नहीं प्रतीत होता है।

उत्तर

68

मैं इस तरह समस्या हल:

public class MyApplication implements ApplicationListener, InputProcessor { 
    // !! Remember to override all other required methods !! 
    ... 

    @Override 
    public void create() { 
     Gdx.input.setInputProcessor(this); 
     Gdx.input.setCatchBackKey(true); 
     // rest of your stuff... 
    } 

    ... 

    @Override 
    public boolean keyDown(int keycode) { 
     if(keycode == Keys.BACK){ 
      // Do your optional back button handling (show pause menu?) 
     } 
     return false; 
    } 

    ... 
} 

नहीं copypasta सामान लेकिन उम्मीद है कि यह आप बाहर मदद करता है। :)

+0

इसे आजमाएं! आपका बहुत बहुत धन्यवाद! –

+1

मैं इसे अपने स्क्रीन क्लास में करूँगा, जो मुझे बेहतर नियंत्रण देगा – basilisk

+1

यदि आप इसे स्क्रीन में संभालना चाहते हैं, तो http://gamedev.stackexchange.com/questions/114972/handling-back-button-in -android- बिना कार्यान्वयन-इनपुटप्रोसेसर/114985 # 114985 – kingAm

27

आप Gdx.input.isKeyPressed विधि का उपयोग कर सकते हैं।

if (Gdx.input.isKeyPressed(Keys.BACK)){ 
    // Do something 
} 
+2

और यह निश्चित रूप से प्रस्तुत() विधि में चला जाता है। –

+0

यह जीवन उद्धारक है। यह अजीब बात है कि डेस्कटॉप डिवाइस के लिए - कीबोर्ड का पता लगाने के लिए उस वर्ग का उपयोग "बटन" के लिए ईवेंट क्यों किया जा रहा है। इस घटना को जेस्चर लिस्टनर वर्ग में प्राप्त करने के लिए और अधिक तार्किक होगा। उल्लेख नहीं है कि आप केवल एक इनपुटप्रोसेसर सेट कर सकते हैं। – MilanG

+2

@MilanG आप मल्टीप्लेक्सर का उपयोग करके एकाधिक इनपुट प्रोसेसर सेट कर सकते हैं, उदाहरण यहां देखें http://stackoverflow.com/a/20048019/22194 – codeulike

0

आप उपयोग कर सकते हैं Gdx.input.isKeyPressed (Keys.BACK) लेकिन आप उस गतिविधि चाहते हैं, तो नहीं बंद हो जाता है के रूप में इस संभाल कर सकते हैं करता है:

Gdx.input.setCatchBackKey(true); 
18

पहले प्रबंधित करने के लिए InputProcessor बनाने बैक कुंजी क्रियाएं और फिर इसे मल्टीप्लेक्सर में जोड़ें ताकि अन्य घटक अभी भी समान घटनाएं प्राप्त कर सकें।

 InputProcessor backProcessor = new InputAdapter() { 
      @Override 
      public boolean keyDown(int keycode) { 

       if ((keycode == Keys.ESCAPE) || (keycode == Keys.BACK)) 

       // Maybe perform other operations before exiting 
       Gdx.app.exit(); 
       return false; 
      } 
     }; 


     InputMultiplexer multiplexer = new InputMultiplexer(mStage, 
       backProcessor); 
     Gdx.input.setInputProcessor(multiplexer); 


और वापस कुंजी को पकड़ने सक्षम करें।

Gdx.input.setCatchBackKey(true); 


सब वहाँ है कि। सौभाग्य!

+0

कीबोर्ड सक्रिय होने पर काम नहीं करता है। –

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