2016-08-12 3 views
1

libGDXコードのスニペットを取得するのに問題があります。libGDXの周りに円をドラッグする

指があまりに速く動くと、ディスクの動きが止まるという問題があります。どういうわけか、ディスクは、それが見えるような動きに追いつくために十分に速く翻訳していません。これには何らかの理由がありますか?

答えて

1

私はあなたのコードから、ポインタ(指)でディスクをドラッグして、ポインタがディスクの内側にあるかどうかを確認する方法だと思います。

問題は、ポインタ(マウスまたは指であれば問題ではありません)が移動したときに、移動した場所のすべての位置を取得するのではなく、いくつかの点だけを取得するということです。 )。ポインターは、実際に動くよりも「ジャンプ」しています。たとえば、画像エディタでは、ユーザーがブラシをガイドすると、これらの点の間に線だけが描かれるため、ブラシを高速に動かすと塗りつぶし線がより「角張った」ように見えます。

問題に戻る:最初にユーザーがディスクをドラッグすることを確認した後、ブール値フラグを設定します。このフラグが真である間に、ポインタがディスクの外にあっても、ポインタが移動するすべての位置にディスクを移動します。ポインタが解放されたときにのみ、このフラグをfalseにリセットします(onMouseUpなど)。

だからあなたのコードがより多くの(擬似コード

if (disc.contains(touchPos.x, touchPos.y)) { 
    dragged = true; 
} 

... 

if (dragged) { 
    disc.x = touchPos.x - disc.radius/2; // disc.x becomes current touch position 
    disc.y = touchPos.y - disc.radius/2; // disc.y becomes current touch position 
} 

... 

public onMouseUp() { 
    dragged = false; 
} 
+0

1のようになり、彼は正しいアプローチです。また、[link](https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/utils/DragListener.html)を見てみることをお勧めします。 –

+0

私はあなたに+1しますしかし、私は有益で有益な答えのために@セバスチャンに感謝できません。私は今実装するために取り組んでいます! –

関連する問題