2011-12-19 110 views
0

我正在嘗試製作基於瓦片的AS3遊戲,該遊戲使用PNG圖像作爲從庫中加載它們的地圖的基礎,並將數據轉換爲陣列,並將每個像素的數據作爲單獨的圖塊。實質上,如果我的數組中有一個128x128像素的PNG像素,綠色像素被轉換爲「GRASS」,那麼我可以在陣列中循環並相應地將貼圖添加到地圖動畫片段。如何將PNG圖像轉換爲數組?

我看過ByteArray類,我似乎無法將數據解碼爲可用格式。如果有人有解決方案來做到這一點,請讓我知道。

+2

到目前爲止您嘗試過什麼?它如何沒有按預期工作?或者你期望社區爲你做你的工作?請閱讀[常見問題]查看我們喜歡回答的問題以及我們不知道的問題。 :)哦,並歡迎來到StackOverflow:D – 2011-12-19 05:49:07

+0

只是好奇,但這個問題啓發了Notch做了什麼? – 2011-12-19 06:35:00

+0

@PranavHosangadi:我嘗試使用ByteArray類嘗試輸出一串字符,我可以手動將其轉換爲屏幕上的可見地圖,但我找不到解碼可正常工作的PNG的方法。 @ Adam:不,因爲我會製作相當大的地圖,所以視覺表現會是最容易創建和管理的。 – PROWNE 2011-12-19 23:23:23

回答

3

BitmapData類似乎是你在找什麼。確保庫中的圖像具有自己的類名稱,並且它的基類是位圖(在屬性中),然後創建圖像的實例,並使用getPixel循環位圖像素數據。

事情是這樣的:

var image:Bitmap = new MyBMP(); 
var bmd:BitmapData = image.bitmapData; 

for(var y:int=0; y < bmd.height; ++y) 
{ 
    for(var x:int=0; x < bmd.width; ++x) 
    { 
     var pixelValue:uint = bmd.getPixel(x, y); 
     trace(pixelValue.toString(16)); 
     // Test if the pixelValue matches the colour you want. 
    }   
} 

剛一說明,確保使用getPixel32如果你使用alpha通道。

+0

令人驚歎!完美的作品,謝謝。 – PROWNE 2011-12-19 23:35:00