如何使用.assets.load(「file」,file.type)加載精靈在這種情況下,精靈的文件類型應該是什麼?使用資產經理LibGDX加載精靈
1
A
回答
3
我猜,你usualy不直接加載Sprite
,但你加載它Texture
並創建一個Sprite
出來。
因此,您致電assets.load("file", Texture.class)
,然後創建一個Sprite
與您加載的Texture
:
Sprite sprite = new Sprite(asstes.get("file", Texture.class))
。
但我建議您使用TextureAtlas
而不是Texture
。
A TextureAtlas
是某種「紋理集合」,它基本上是一個大的Texture
,它本身具有所有單個的Texture
。
您可以使用assets.load("atlas", TextureAtlas.class)
加載它並使用它: TextureAtlas atlas = assets.get("atlas", TextureAtlas.class)
。
然後,您可以創建Sprite
這樣的:
Sprite sprite = atlas.createSprite("spriteName");
要創建一個TextureAtlas
你可以使用TexturePacker
。
1
不建議直接加載精靈。當Android上發生上下文丟失時,它將釋放佔用您已加載資源的內存。因此,在上下文丟失後直接訪問您的資產會立即使恢復的應用程序崩潰。
爲了防止上述問題,您應該使用AssetManager加載和存儲資源,如紋理,位圖字體,瓷磚貼圖,聲音,音樂等。通過使用AssetManager,您只需加載一次資產。
我建議這樣做的方法如下:
// load texture atlas
final String spriteSheet = "images/spritesheet.pack";
assetManager.load(spriteSheet, TextureAtlas.class);
// blocks until all assets are loaded
assetManager.finishedLoading();
// all assets are loaded, we can now create our TextureAtlas object
TextureAtlas atlas = assetManager.get(spriteSheet);
// (optional) enable texture filtering for pixel smoothing
for (Texture t: atlas.getTextures())
t.setFilter(TextureFilter.Linear, TextureFilter.Linear);
// Create AtlasRegion instance according the given <atlasRegionName>
final String atlasRegionName = "regionName";
AtlasRegion atlasRegion = atlas.findRegion(atlasRegionName);
// adjust your sprite position and dimensions here
final float xPos = 0;
final float yPos = 0;
final float w = asset.getWidth();
final float h = asset.getHeight();
// create sprite from given <atlasRegion>, with given dimensions <w> and <h>
// on the position of the given coordinates <xPos> and <yPos>
Sprite spr = new Sprite(atlasRegion, w, h, xPos, yPos);
相關問題
- 1. Libgdx - 正在加載資產
- 2. Libgdx使用轉換精靈
- 3. 繪製精靈Libgdx
- 4. Libgdx - 最大精靈
- 5. libGDX所有紋理/精靈白色塊
- 6. Android Libgdx assetManager:資產未加載
- 7. 預加載精靈套件紋理
- 8. 所有關於精靈和資產
- 9. 如何使用Android上的資產管理器加載資產?
- 10. 在libgdx中傾斜精靈
- 11. 刪除精靈Libgdx Java
- 12. Libgdx未能畫出精靈
- 13. 刪除精靈Libgdx Java
- 14. 旋轉精靈觸摸libgdx
- 15. libgdx - 精靈不旋轉
- 16. 使用EaselJS加載精靈表
- 17. LIBGDX資產管理器加載真實字體字體
- 18. 通過AssetManager管理和加載資產(Libgdx)
- 19. 資產管理器加載pixmap out of mem Libgdx Java
- 20. 使用AssetManager在LibGDX,Java中加載資產
- 21. 使用Async任務加載所有資產 - Libgdx
- 22. LIBGDX如何從紋理地圖集中添加精靈
- 23. LibGDX Sprite批處理並在運行時添加新的精靈
- 24. 使用FObjectFinder加載資產
- 25. 資產經理,獲取資產ID?
- 26. 資產在Libgdx
- 27. 在HTML中使用畫布處理精靈加載
- 28. 產卵精靈gles2
- 29. 精靈和產卵
- 30. 在一個精靈中組合兩個精靈(Libgdx)
而不是創建一個新的'Sprite'了'AtlasRegion'的,你可以直接從'TextureAtlas'用'atlas.createSprite(創造它spritename)'。同樣'TextureFilter'可以在'TexturePacker'的配置中設置,因此它被設置爲整個'TextureAtlas'。 – Springrbua 2014-12-05 12:41:29
這個答案不完全正確。使用或不使用AssetManager時,libgdx中的紋理會自動*託管*,因此會在上下文丟失後自動重新加載。 – Tenfour04 2014-12-05 16:23:12
在libgdx中,您可以擁有託管和非託管紋理。因此,確實可以通過確保自動管理紋理來避免使用AssetManager。這是從FileHandle加載紋理時的情況,但如果它們是從Pixmap加載的,則必須在'resume()'或者'resize()'方法中手動重新加載它們。爲了避免這種頭痛,我建議使用'AssetManager'。 – Gio 2014-12-05 21:18:39