PlayN フレームワークの Tripleplay UI レイアウトが気に入っていますが、レイアウト計算をトリガーせずにウィジェットのテキストを移動したり変更したりできるように、レイアウト計算を無効にすることはできますか?
たとえば、 に 1 つのボタンを含む単純な画面を作成し、AxisLayout
そのボタンにリスナーを追加しました。
button.layer.addListener(new Adapter() {
private float startX;
@Override
public void onPointerStart(Event event) {
startX = event.localX();
}
@Override
public void onPointerDrag(Event event) {
button.layer.transform().translateX(event.localX() - startX);
}
});
ボタンをドラッグすると左右に移動するようになりました。満足しています。ソースコードは Github で見ることができます。
ただし、このコードには 2 つの問題があります。
- マウスを離すか、指を離すと、ボタンが元の位置に戻ります。
- マウスまたは指を上にドラッグしてボタンから離すと、ボタンが一時的に開始位置に戻ってからドラッグを続けます。この状態でマウスを離すか指を離すと、ボタンの外に出たままになります。
ボタンの状態が押された状態から押されていない状態に、またはその逆に変わるたびに、画面のレイアウトが再計算され、ボタンが開始位置に戻るように見えます。
レイアウトを再計算しないように画面に指示する方法はありますか? ボタンが有効であることをボタンに伝えることはできますか?
私が考えることができる唯一の戦略は、ボタンを軸レイアウトに配置し、その位置を計算してから、移動中に軸レイアウトから絶対レイアウトに移動することです。もっと簡単な方法があることを願っています。