2016-04-16 105 views
0

所以我有3个矩形的行为像包含方法的按钮。前两个按钮只是左右移动字符,但第三个是用户touchDown跳转,然后抛出一个当touchUp时球。 我的问题是,当按钮被按下时,像我按住跳转按钮同时按住并释放左/右按钮时,它们会混合起来。LibGdx多点触摸事件混淆

我知道有指针ID的东西,但它是混乱如地狱。

+0

每一个触摸都有一个指针索引。如果您使用的是Gdx.input.getX()或getY()方法,则它们将返回最后一次触摸并且仅返回最后一次触摸。最后**单**触摸。 – ossobuko

回答

0

设置新InputProcessor到Gdx.input.setInputProcessor(),并检查是否触摸点被包含在你的矩形,这样的事情应该工作:

 Gdx.input.setInputProcessor(new InputAdapter() { 
     @Override 
     public boolean touchDown(int screenX, int screenY, int pointer, int button) { 
      if(leftRect.contains(screenX, screenY)){ 
       //move player left 
       return true; 
      } 

      if(rightRect.contains(screenX, screenY)){ 
       //move player right 
       return true; 
      } 

      return false; 
     } 

     @Override 
     public boolean touchUp(int screenX, int screenY, int pointer, int button) { 
      if(jumpRect.contains(screenX, screenY)){ 
       //make player jump 
       return true; 
      } 
      return false; 
     } 
    }); 

我强烈建议你使用Scene2D为用户界面相关的东西,它可能有点难以开始,但它会让你的UI编码更易于实施和维护。

+0

你打算不接触坐标? – ossobuko

+0

非常感谢!我认为我必须通过指针ID-s来处理自己的多点触摸事件,但事实证明它是默认完成的。 – WannabeHacker

+0

很高兴能够提供帮助,请记住,接触点始终位于屏幕像素坐标中,如ossobuko所示,如果不使用像素完美的相机,则可能需要取消投影坐标。 –