3

libgdxを使って簡単なゲームを作っています。使用しようとしているninepatchを持つTextureAtlasがあります:使いたい9パッチ

画像は menu.9.png として保存されます

次のコードを使用しています。

Image bg = new Image(Room.iAtlas.findRegion("GUI/menu"));
bg.setBounds(guix-border,guiy-border,(border+radius)*2,(border+radius)*2);
batch.begin();
    bg.draw(s,1);
batch.end();

出力は次のようになります。
ここに画像の説明を入力

私は本当に何が間違っているのか分かりませんが、それはもっとこのようになるはずです(その上に形があることを除いて、私はそれらを追加しませんでした):(
ここに画像の説明を入力 私はそれを手で作成しました、私は実際に 9patch が動作したことはありませんでしたし、わざわざ編集しなかったので船もありません)

4

1 に答える 1

2

あなたの「ナインパッチ」は実際のナインパスとして扱われておらず、「縮退した」ナインパッチとして扱われているようです (以前に非常によく似た問題がありました:ナインパッチ画像を Libgdx Scene2d ボタンの背景として読み込むはひどく見えTextureAtlasますが、解決策であるはずの a を使用していませんでした。)

基本的に、Libgdx がアトラスから 9 つのパッチを読み取るとき、画像を 9 つのタイルに分割する方法を説明するすべてのメタデータを読み取ることになっています ( https://code.google.com/p/libgdx/を参照)。 wiki/TexturePacker#NinePatches )。これがうまくいかない可能性のある場所がいくつかあります。

  1. テクスチャは有効な 9 パッチではなく、メタデータは無視されています。(Androiddraw9patchツールで確認してください。)
  2. テクスチャ パッカーが.9.pngファイルを正しく処理していません。アトラスの .txt ファイルの内容を確認し、「menu.9.png」エントリに関連付けられた「分割」エントリがあるかどうかを確認します。
  3. テクスチャ ルックアップは、9 パッチ領域の通常のラッパーを返すだけであり、オブジェクトTextureRegionでラップしていません。それをより明確にするためにNinePatch使用してみてください。TextureRegion.createNinePatch(これは必要ないという印象を受けていますが、そうかもしれません...)
于 2013-03-25T05:13:18.957 に答える