1

スクリーンショット: http://imgur.com/kNASp

編集 - この問題をよりよく示すために、Immediate レイヤーの大きな画像が ImmediateLayer のサイズにクリップされているようです。

サンプル イメージには、2 つの ImmediateLayers があります。左側のサイズは、ImmediateLayer のサイズよりも大きいイメージを表示し、回転または移動するとクリップされて表示されます。右側には、画像の低解像度バージョンが拡大され、同じ位置に表示されています。アンクリップ。

バックグラウンドでは、イメージの元のハイレゾ バージョンが表示され、全体がロードされ、ImmediateLayer で表示されたときにのみクリップされていることが示されます。

では、回転の問題ではなく、クリップされずに ImmediateLayer で画像を表示および変換できるかどうかの問題ですか?

オリジナル -

PlayN では、クリップされた ImmediateLayer にレンダリングするときに画像を回転させようとしています。レンダリング時にサーフェスの回転を設定することで画像を回転できますが、これにより画像がクリップされてから回転されます。そのため、星の画像は回転する前にポイントがクリップされます。

この回転コードは正しく、クリッピングはバグですか?

surface.save();

surface.rotate(rotation);

surface.drawImage(star, 0, 0);
surface.restore();

少し背景を説明すると、ImmediateLayer を使用する理由は、2 人のプレイヤーの分割画面ビューを並べて表示するためです。

4

2 に答える 2

1

編集:

あなたは明らかに何か間違ったことをしています。回転と平行移動の trasform を使用して画像をクリップされた ImmediateLayer に描画する例を追加しましたが、問題なく動作します。この例を確認してください。うまくいけば、何が間違っているのかが明らかになります。

クリップされたレイヤーに回転および変換された画像描画の例

オリジナル:

エラーを示すスクリーンショットを投稿できますか?

クリッピング領域を定義する ImmediateLayer の境界以外では、クリッピングは行われません ( ImmediateLayer 自体を絶対に回転させないでください)。

したがって、Surface 変換を回転させてから画像を描画するかどうかは問題ではありません。回転した画像の一部が ImmediateLayer の境界外にある場合、それらの部分は切り取られます。ただし、直接レイヤーの境界内にあるものはすべて通常どおりに描画されます。

于 2012-05-23T04:33:17.100 に答える
0

@samskivert - サンプル コードを実行し、それをスクリーンショットと比較すると、結果がまったく異なることに気付きました。クリッピングはまったくありませんでした。

プロジェクトの playn 依存関係を 1.2 から 1.3.1 に移動し、したがって Lwjgl に移動すると、問題が解決しました。

http://imgur.com/hqile

まったく同じコードですが、依存関係が間違っています。問題の真相を解明するためにご協力いただき、ありがとうございます。

于 2012-05-26T07:11:47.740 に答える