私のプログラムは一連の画像をパックし、それらをaste.pngとaste.atlasに出力します。パッキングのコードは次のとおりです。
public void pack(){
System.out.println("Packing should not be ordinarily called! If you did not have explicit intentions of Packing, please check ImageAtlas constructor.");
Settings settings = new Settings();
settings.maxWidth = 512;
settings.maxHeight = 512;
TexturePacker2.process(settings, "E:/Files/Eclipse Projects/StarFighters/StarFighters-android/assets/sprites/" + name,
"E:/Files/Eclipse Projects/StarFighters/StarFighters-android/assets/sprites/", name.substring(0,4));
}
プログラムを実行するたびにパックする必要はないので、絶対ファイルパスを使用できます(デスクトップを実行していて新しいイメージを追加した場合にのみパックします)が、絶対ファイルパスのみを使用しましたそれ以外の方法がわからないからです。私はアンドロイドアセットフォルダーを使用しています。(デスクトップはAndroidアセットフォルダーにリンクされています)デスクトップバージョンから実行しているため、Gdx.files.internalが処理するアセットパスを使用する必要があるときに、デスクトップパスに移動しようとしています。(この問題は私のプログラムの機能に不可欠ではありません)
画像をパックしたら、次のようにします。
atlas = new TextureAtlas(Gdx.files.internal("sprites/aste.atlas"));
public Texture getTex(String imgname){
return atlas.findRegion(imgname).getTexture();
}
getTex()を試してみると、imgnameとして「sma_a2」を渡します。
私のassets/sprites / asteroidsディレクトリには次の画像があります:big_a1.png big_a2.png med_a1.png med_a2.pngsma_a1.pngsma_a2.pngこれらはすべてaste.pngとaste.atlasに正常にパックされました
私の問題は、受け取った画像でどのfnameを渡しても、aste.png全体であるということです。
また、画像から始めて、画像を再度取得するためだけにパックするので、なぜ画像だけでなくパックを使用するのかについても興味がありました。