2014-11-14 111 views
0

我在执行代码中的touchDown表示时遇到问题。
我使用迭代器在屏幕上运行表示球纹理的圆圈。 在下面的代码中,我将所有不相关的部分切割为当前用户触摸它时从屏幕上移除球\圆的问题。此刻,我调用该方法波纹管在我的渲染和使用:libGDX touchDown困难

int x1 = Gdx.input.getX(); 
    int y1 = Gdx.input.getY(); 
    Vector3 input = new Vector3(x1, y1, 0); 
    cam.unproject(input); 

,并使用“输入”作为参数“ballsIterator(输入);”。问题是我被告知为了停止触摸效果,我需要使用touchDown方法中的代码。但我该怎么做呢?这个方法的完整版本不得不放在render方法中,而不管是否有触及效果,我尝试实现InputProcessor并在touchDown方法中重复该方法的代码,但没有在render方法中调用它,所以它没有没有工作,当我试图在渲染内部调用它时,我不知道用什么参数来指定“int指针,int按钮”...问题是,在完成上述所有操作后,如何使用touchDown方法在我的代码?

private void ballsIterator(Vector3 input){ 
    Iterator<Circle> iterBall = balls.iterator(); 
    while (iterBall.hasNext()) { 
     Circle ball = iterBall.next(); 
     if (dog.velocity.x != 0) { 

      if (ball.contains(input.x, input.y)) { 
       iterMeteor.remove(); 
      } 
     } else { 
      iterMeteor.remove(); 
     } 
    } 
} 
+0

存储'Vector3 touchPos'并将其设置在'touchDown':'touchPos = cam.unproject(new Vector3(screenX,screeny,0))'中。在'touchUp'中简单地将它设置为'null'并且在'render'中,您可以说'if(touchPos!= null)ballsIterator(touchPos);' – Springrbua 2014-11-14 14:21:04

+0

删除我的预览评论,因为我玩过,遵循你的解释并设法实现我想要的。谢谢! – user3395989 2014-11-15 13:03:13

+0

如果你解决了你的问题,你可以发布解决方案作为答案并接受它,它可以帮助其他人解决同样的问题。 – Springrbua 2014-11-17 06:28:12

回答

0

有了Springbua的解释,我设法通过分割Iterator方法来解决我的问题。重复必要的部分并将负责点击的代码复制到一个以Vector3作为参数的新的公共静态无效方法中,并在实现InputProcessor的类中创建一个Vector3,给它一个touchDown参数,称为新的Iterator方法保持点击部分并使用InputProcessor类的Vector3作为其参数。