Java LibGdx多点触摸处理侦听器
我有一些涉及多次接触的问题 有一个舞台(主舞台),上面有一个演员(playLight,下面的代码),一个HUD舞台(HUD.Stage)和一个处理两个舞台的输入多路复用器Java LibGdx多点触摸处理侦听器,java,android,libgdx,multi-touch,Java,Android,Libgdx,Multi Touch,我有一些涉及多次接触的问题 有一个舞台(主舞台),上面有一个演员(playLight,下面的代码),一个HUD舞台(HUD.Stage)和一个处理两个舞台的输入多路复用器 inputMultiplexer= new InputMultiplexer(); inputMultiplexer.addProcessor(HUD.stage); inputMultiplexer.addProcessor(mainStage); 我想用两个手指来处理输入,这样一个手指可以移动我的物体,另
inputMultiplexer= new InputMultiplexer();
inputMultiplexer.addProcessor(HUD.stage);
inputMultiplexer.addProcessor(mainStage);
我想用两个手指来处理输入,这样一个手指可以移动我的物体,另一个手指可以上下滑动或双击舞台上的任何地方,除了演员在场的地方
我在我的主舞台上使用了一个监听器:
mainStage.addListener(new ActorGestureListener(5,0.3f,0.4f,2f){
@Override
public void pan(InputEvent event, float x, float y, float deltaX, float deltaY) {
if(event.getPointer() == LightHandler.playerLight.pointerUsed){
listeningToPointer = -1;
return;
}
listeningToPointer= event.getPointer();
if(deltaY>0){
mainCharacter.up();
}
else{
mainCharacter.down();
}
}
@Override
public void tap(InputEvent event, float x, float y, int count, int button) {
if(count==2){
mainCharacter.clicked();
}
}
});
…对于这个(主流)舞台上的一个物体
两位听众按照我的要求分别工作
问题是,当我用一根手指移动舞台上的对象(playerLight)并尝试用另一根手指平移时,Gdx似乎无法识别第二个输入,或者至少Gdx无法找到另一个ID的输入
我试过:
演员将有一个默认的监听器,当它被添加到
Stage
时。您应该做的是使用DragListener
而不是使用pan
方法在mainStage
中使用侦听器。以下是您如何在主体中移动您的演员
public void pan(InputEvent event, float x, float y, float deltaX, float deltaY)
{
// get a specific actor on the stage
if (event.getTarget().equals(actor))
{
float dx = x - actor.getWidth() / 2;
float dy = y - actor.getHeight() / 2;
actor.setPosition(dx,dy);
return;
}
}
就这么简单。我们减去actor.getWidth()/2
和actor.getHeight()/2
这样当你的手指触摸演员时,它就会位于你手指的中央。这将我的应用程序改进了一点,谢谢!然而,多点触控仍然不起作用。当我移动演员并用另一根手指在另一个地方平移舞台时,什么也没发生。当释放我的演员时,重击再次起作用。。。
public void pan(InputEvent event, float x, float y, float deltaX, float deltaY)
{
// get a specific actor on the stage
if (event.getTarget().equals(actor))
{
float dx = x - actor.getWidth() / 2;
float dy = y - actor.getHeight() / 2;
actor.setPosition(dx,dy);
return;
}
}