2015-05-21 25 views
0

我想爲多個主紋理文件使用相同的.atlas文件。 這可以很容易地通過具有多個幾乎完全相同的.atlas文件(僅與紋理文件名的第一行不同)來實現,但它不是最好的解決方案。libGDX TextureAtlas - 在運行時提供主紋理文件名

我想知道是否可以在運行時,在TextureAtlas對象創建期間或之後提供主紋理文件的名稱。 我對TextureAtlas代碼進行了快速瀏覽,但API似乎不允許這樣做,至少不是以直接的方式。

回答

0

經過一番研究,似乎只有這樣,才能實現它是延長TextureAtlas然後複製並修改構造函數的代碼。 目前由簡單的閱讀寰文件的第一行中獲得的紋理文件的名稱:

String line = reader.readLine(); 
        if (line == null) break; 
        if (line.trim().length() == 0) 
         pageImage = null; 
        else if (pageImage == null) { 
         FileHandle file = imagesDir.child(line); 

而不是做這種方式的文件句柄將需要使用作爲參數傳遞一個文件名來創建一個構造函數。

在這種情況下,我要堅持多個地圖集文件:-)

0

您可以將圖像目錄傳遞給TextureAtlas構造函數。我還沒有嘗試過,但是好像你可以擁有你的單個.atlas文件,然後在不同的目錄中有單獨的紋理文件。

從TextureAtlas ...

public TextureAtlas (FileHandle packFile, FileHandle imagesDir) { 
    this(packFile, imagesDir, false); 
} 

/** @param flip If true, all regions loaded will be flipped for use with a perspective where 0,0 is the upper left corner. */ 
public TextureAtlas (FileHandle packFile, FileHandle imagesDir, boolean flip) { 
    this(new TextureAtlasData(packFile, imagesDir, flip)); 
} 
+0

謝謝,但那不是我要找的。該解決方案將多個文件夾替換爲多個文件夾,每個文件夾中只有一個文件,這並不是一個真正的改進。我今天做了一些研究,沒有辦法實現我想要的簡單使用API​​。我發現的唯一方法是修改構造函數代碼,然後我寫了一個關於它的答案。但是我不打算實施這個解決方案。 –

+1

夠公平的。我認爲這是對多個地圖集文件的改進,因爲您不再需要維護多個幾乎相同的地圖集文件。不過,這是你的項目。 –

+0

一般而言,你是對的,維護會更容易。但是,這些特定的文件不會真的成爲一個可以改變的主題。不過我可能會在別的地方使用你的解決方案,所以謝謝你指點我! –