複数のタッチを含むいくつかの問題があります。LibGdx複数のタッチハンドリングリスナー
アクタ(playLight、下のコード)、HUDステージ(HUD.stage)、およびInputMultiplexerを使用して両方のステージを処理するステージ(mainStage)があります。
inputMultiplexer= new InputMultiplexer();
inputMultiplexer.addProcessor(HUD.stage);
inputMultiplexer.addProcessor(mainStage);
は、私は私の俳優が
上にある場でを除いて、一本の指が私のオブジェクトを移動することができ、他方はスワイプすることができますし、ダウンしているか、どこにでも私のステージ上をダブルタップように、2本の指での入力を処理します私は私のメインステージの両方のためのリスナーを使用してい:...
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();
}
}
});
..andこの(MainStageの)上のオブジェクトのステージのための
playerLight.addListener(new DragListener(){
@Override
public void drag(InputEvent event, float x, float y, int pointer) {
pointerUsed = pointer; // will be reset to -1 at the end of update()
setPosition(getX()+ Gdx.input.getX(pointerUsed)-getWidth()/2f,getY()+Gdx.input.getY(pointerUsed)-getHeight()/2f);
}
@Override
public void dragStart(InputEvent event, float x, float y, int pointer) {
pointerUsed = pointer; // will be reset to -1 at the end of update()
isDragging = true;
}
@Override
public void dragStop(InputEvent event, float x, float y, int pointer) {
isDragging = false;
}
});
mainStage.addActor(playerLight);
私は彼らが欲しいとリスナーの仕事separetly。
問題は、ステージ上のオブジェクト(playerLight)を1本の指で動かし、別の指でパンニングしようとすると、Gdxが2番目の入力を認識しないか、少なくともGdxが別の入力を認識できないようですID。
私が試した:
- をMainStageのリスナーにIDを要求していないために
- (この場合はHUDステージ)別のステージ上のオブジェクトを配置するには、simulationouslyとき、両方のリスナーをトリガにつながります私のオブジェクトを動かす(期待通りに)。
これは私のアプリを少し改良しました、ありがとうございます!しかし、マルチタッチは、まだ動作しません。私が俳優を動かし、別の場所で別の指でステージをパンすると、何も起こりません。私の俳優を解放するときに、再びスワイプアップします... –