libgdx と scene2d を使用してカード ゲームに取り組んでいます。私のカード クラスは Image アクター クラスを拡張します。ドラッグしたときの x 位置に基づいてカードを描画する順序を設定する方法を見つけようとしています。
だから私は試しました:
@Override
public void drag(InputEvent event, float x, float y, int pointer) {
float sx = event.getStageX();
float sy = event.getStageY();
if(sx - offsetX > 0 && sy - offsetY > 0){
event.getTarget().setPosition(sx - offsetX, sy - offsetY);
c.setZIndex((int) sx);
}
}
どうやら、zindex はステージ/グループ内の俳優の数にバインドされているため、これは機能しません。したがって、基本的にインデックスは 0 ~ 4 にする必要があります。私の次のアプローチは、画面幅を 5 で割り、それを zindex に設定することでした。カードが幅全体で均等に分離されていれば問題ありません。しかし、カードが途中で圧縮されていると、見栄えが悪くなります。2 ~ 3 枚のカードが真ん中に落ち、最後にドラッグされたカードが他のカードの上に描かれます。私はしたくない。
私の最後のアプローチは、すべてのカードを xposition で並べ替え、それらをループして z-index を与えることでした。そして、これは私が望むように機能しますが、遅いと思います(他のすべてのものをミックスに追加すると)
とにかく、アクターをループせずに x-position に相対的な z-index を設定できますか?