6

画面の右側に新しい画像を追加し、左側に移動させることで動的に更新される非常に単純なプロットを作成しました。このように、画面の境界内のプロットは、時間の経過とともにプロットされているように見えます。

残念ながら、この方法では、画像を画面の外から開始して表示する必要があり、左側の画面から完全に外れる前に再度削除することはできません。これにより、画像が画面の境界の外に部分的に表示されます。

コントロールは、Group2 つの静止画像 (黒の背景と前景としての画面の画像) とその間のすべての動画を含む として作成されます。これは(他のすべてのアクターと同様に) Groupmy に追加され、 の一部として描画されます。StageStage

下の画像では、コントロールの境界が赤でマークされています。これらの境界の外にある動画の部分を非表示にしたいと思います。私が見逃したいくつかのlibGDX機能を使用してこれを行うことは可能ですか? おそらく、グループの描画領域を何らかの形で制限することによってですか?

画面の仕組みの図。

私の他の選択肢は、画面の前に青い背景の一部を描画するか、異常値を非表示にするか、画面の端を十分に厚くしてそれらを非表示にすることです. これらの解決策はどちらも不必要に不便だと思いますが、これを行うためのより良い方法があると確信しています。

助言がありますか?

4

1 に答える 1

12

解決策はScissorStackを使用することでした。

@Override
public void draw(SpriteBatch batch, float parentAlpha) {

    //Create a scissor recangle that covers my Actor.
    Rectangle scissors = new Rectangle();
    Rectangle clipBounds = new Rectangle(getX(),getY(),getWidth(),getHeight());
    ScissorStack.calculateScissors(camera, batch.getTransformMatrix(), clipBounds, scissors);
    batch.flush(); //Make sure nothing is clipped before we want it to.
    ScissorStack.pushScissors(scissors);

    //Draw the actor as usual
    super.draw(batch, parentAlpha);

    //Perform the actual clipping
    ScissorStack.popScissors();
}
于 2013-07-10T18:16:06.913 に答える