這裡將利用教程所提供的"Treasure Hunter Game"來直接學習PixiJS中的語法。"Treasure Hunter Game"的程式碼 ---> Click Here !
系統提示:「Beware the barrenness of a busy life.--Socrates」,PixiJS青銅玩家還卡關於前置作業後半段,僅獲得經驗值提昇等級。
在【LV. 6】階段時提到,當我們要把圖片顯示在畫布之前,必須先對圖片做些處理,在【LV. 6】中已完成了第一步驟「創建Sprites」,接著將繼續處理下去。
document.body.appendChild(app.view);
loader
.add("images/treasureHunter.json");
.load(setUp);
[ 已完成 ] 1. 創建Sprites
[ 進行中 ] 2. 將圖片載入到texture cache
[ 待完成 ] 3. 載入圖片、轉換成Texture
Step 2. 將圖片載入到texture cache
我們創建好sprites後,是沒辦法直接使用、直接利用PIXI顯示出來的,因為PIXI是使用WebGL渲染,並在GPU上面執行,所以圖片的格式需要能讓GPU處理。
而一張可以被GPU處理的圖片(WebGL-ready image),我們稱之為「texture」(texture中文是材質貼圖,又或者可以稱作紋理貼圖)。
另外,為了可以更快速、更有效率的運行程式,PIXI會利用「texture cache」(紋理緩存)來儲存或引用所有我們Sprites需要的Texture。
至於將圖片放入Texture Cache的方法,PixiJS 教程中文版提供底下的方法:
PIXI.utils.TextureCache["images/cat.png"];
但是去官方文件看一下,發現他對於TextureCache幾乎沒什麼內容QQ(那欸安內):
後來繼續查資料,看了這幾篇文章:
基本Loader、
[PixiJS - Day-13] PIXI.loaders.Loader、
學JS的心路歷程 Day28 - PixiJS - 基礎(二)
整理出幾個重點:
其中有提到在PIXI論壇中,Xerver告知不要使用底下這個方法。而他建議不要使用的方法竟然是PixiJS 教程中文版提供的( ˘•ω•˘ ),並且說明應該使用.loader
來將圖片載入texture cache緩存之中。
PIXI.utils.TextureCache["images/cat.png"];
//Xerver告知不要使用。
取而代之的應該使用loader
語法:
PIXI.loader.resources[player.img].texture;
這邊回答不要將loader
語法與其他方便函數(直接從convenience methods直翻...,不過這裡指的是PIXI.Sprite.fromImage()
語法)混在一起使用。
版主提到使用loader
就用loader
的值即可(不要混其他的函式),不過如果你不需要預載Texture,而是直接利用url去建立Sprites的話,那可以直接使用PIXI.Sprite.fromImage()
語法
總而言之,若想要把圖片加入Texture Cache之中,最建議的方法就是使用PIXI.loader
,也就是接下來要提到的內容。
今天又是整天課,所以利用中午休息時間趕快處理今日文章,內容就不是很多QQ
總之,今天的部份進入到「 將圖片載入到texture cache」,而他的用意在於先對於Texture做緩存,這樣當Sprites要使用到Textrue時就可以有效率、更快速地使用了。
明天會寫前置作業的最後一個部份!接著就會進入到setUp()的地方。
【註】Texture
中文為材質貼圖,又或者可以稱作紋理貼圖。在電腦圖學中是把儲存在記憶體里的點陣圖包裹到3D彩現物體的表面。紋理貼圖給物體用簡單的方式類比出了複雜的外觀。
【註】Sprite、Textrue、Image?
在這部份,這3個名詞常常出現,搞到有點不知道他們到底有什麼區別。
首先Sprite跟Texture都是屬於Image的一種。接著Sprite與Texture在不同地方會有不太相同的解釋,而這裡以PIXI來說的話,無論利用單張圖片路徑、tileset圖片或texture atlas構成的圖片,我們把他稱作Sprite,而當這個Sprite變成可以讀入程式中的圖片時,我們就會稱作Textrue。
可以用【LV. 6】曾經出現的圖片做解釋:
放好畫布,然後呢?