2015-04-02 70 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);不存在。

这不会给出任何警告或错误,但会产生问题。