1
タッチドラッグで移動したい俳優があります。InputListener.touchDraggedに一貫性のない(点滅する)マウス座標
class Tile extends Actor {
Tile (char c) {
addListener(new InputListener() {
private float prevX, prevY;
@Override
public void touchDragged (InputEvent event, float x, float y, int pointer) {
Gdx.app.log(TAG, "touchDrag: (" + x + "," + y);
Tile cur = (Tile)event.getTarget();
cur.setPosition( //this call seems to cause the problem
cur.getX() + (x - prevX),
cur.getY() + (y - prevY));
prevX = x; prevY = y;
}
});
}
@Override
public void draw(Batch batch, float alpha) {
batch.draw(texture, getX(), getY());
}
}
ドラッグとタッチの約半分の速度を移動させながらshuddersのタイル一種。
I/Tile: touchDrag: (72.99997,78.99994)
I/Tile: touchDrag: (65.99997,70.99994)
I/Tile: touchDrag: (61.99997,64.99994)
I/Tile: touchDrag: (55.99997,58.99994)
I/Tile: touchDrag: (51.99997,52.99994)
I/Tile: touchDrag: (42.99997,45.99994)
:私はコメント行(つまり、俳優の位置をリセットしません)、ドラッグ出力がはるかに合理的なルックスを削除した場合
I/Tile: touchDrag: (101.99991,421.99994)
I/Tile: touchDrag: (112.99985,429.99994)
I/Tile: touchDrag: (101.99991,426.99994)
I/Tile: touchDrag: (112.99985,433.99994)
I/Tile: touchDrag: (101.99991,429.99994)
I/Tile: touchDrag: (112.99985,436.99994)
:これは、次のような座標を出力し、ロギングラインによって確認されました
アイデア見てくれてありがとう!
ありがとうございます!魅力のように働いた。この事実は[InputListener](https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/InputListener.html)のドキュメントには表示されません。この事実がどこに文書化されているか知っていますか? – sam
ドキュメントに記載されていないように見えます。 scene2d座標は常にローカルアクタの座標系で与えられることを覚えておいてください。 – Tenfour04