2015-04-02 39 views
-1

現場表現相當不錯,但觸摸不起作用。我註冊了所有的精靈並且也製作了onTouchAreaBindingOnActionDownEnabled(true)。我曾嘗試使用在MenuScene中製作的Andengine,但它也不能僅用於觸摸部分。這是我現在的代碼。 我有同樣的問題,因爲這位先生here,因爲我已經沒有辦法了,我改變我的代碼:Android Touch無法正常工作。 Andengine

import org.andengine.engine.camera.Camera; 
import org.andengine.entity.sprite.Sprite; 
import org.andengine.input.touch.TouchEvent; 
import org.andengine.opengl.texture.region.ITextureRegion; 
import org.andengine.opengl.util.GLState; 
import org.andengine.opengl.vbo.VertexBufferObjectManager; 

import com.***.RM;   //I changed the directory name to *** 
import com.***.SceneManager; //I changed the directory name to *** 
import com.***.SceneType; //I changed the directory name to *** 

public class MainMenuScene extends BaseScene { 

    private final int MENU_PLAY = 0; 
    private final int MENU_OPTIONS = 1; 
    private final int MENU_CREDITS = 2; 
    private final int MENU_EXIT = 3; 

    final int w = 256, h = 64; 

    public class MenuSprite extends Sprite { 

     private int ID; 

     public MenuSprite(int pID, int pX, int pY, ITextureRegion tex, VertexBufferObjectManager vbom) { 
      super(pX, pY, w, h, tex, vbom); 
      this.ID = pID; 
     } 

     @Override 
     public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float pTouchAreaLocalX, float pTouchAreaLocalY) { 
      System.out.println("text"); 
      if (pSceneTouchEvent.isActionDown() || pSceneTouchEvent.isActionMove()) { 
       onclick(this.ID); 
       this.setScale(1.5f); 
       return true; 
      } else { 
       this.setScale(1f); 
      } 

      return true; 
     } 

    } 

    @Override 
    public void createScene() { 
     attachChild(new Sprite(RM.MX, RM.MY, rM.menu_back, vbom) { 
      @Override 
      protected void preDraw(GLState pGLState, Camera pCamera) { 
       super.preDraw(pGLState, pCamera); 
       pGLState.enableDither(); 
      } 
     }); 

     final MenuSprite playMenuItem = new MenuSprite(MENU_PLAY, RM.MX, RM.CH * 4/6, rM.menu_play, vbom); 
     final MenuSprite optionsMenuItem = new MenuSprite(MENU_OPTIONS, RM.MX, RM.CH * 3/6, rM.menu_options, vbom); 
     final MenuSprite creditsMenuItem = new MenuSprite(MENU_CREDITS, RM.MX, RM.CH * 2/6, rM.menu_credit, vbom); 
     final MenuSprite exitMenuItem = new MenuSprite(MENU_EXIT, RM.MX, RM.CH * 1/6, rM.menu_exit, vbom); 

     attachChild(playMenuItem); 
     attachChild(optionsMenuItem); 
     attachChild(creditsMenuItem); 
     attachChild(exitMenuItem); 

     registerTouchArea(playMenuItem); 
     registerTouchArea(optionsMenuItem); 
     registerTouchArea(creditsMenuItem); 
     registerTouchArea(exitMenuItem); 

     setTouchAreaBindingOnActionDownEnabled(true); 
    } 

    @Override 
    public void disposeScene() { 
    } 

    @Override 
    public SceneType getSceneType() { 
     return SceneType.SCENE_MENU; 
    } 

    @Override 
    public void onBackKeyPressed() { 
     System.exit(0); 
    } 

    public void onclick(int ID) { 
     switch (ID) { 
      case MENU_PLAY: 
       SceneManager.getInstance().createLevelSelectionScene(); 
       break; 
      case MENU_OPTIONS: 
       break; 
      case MENU_EXIT: 
       onBackKeyPressed(); 
       break; 
      default: 
       break; 
     } 
    } 

} 

下面是截圖(我刪除標題): enter image description here

在logcat中我得到的下面就感觸:

04-02 22:29:31.909: I/InputReader(159): dispatchTouch::touch event's action is 0 
04-02 22:29:31.909: I/InputDispatcher(159): Delivering touch to current input target 

,但我的應用程序過濾消息已經沒有觸摸日誌,甚至不是我增加了system.out

回答

0

pOnCreateSceneCallback.onCreateSceneFinished(menuScene);不存在。

這不會給出任何警告或錯誤,但會產生問題。