我正在尝试制作基于瓦片的AS3游戏,该游戏使用PNG图像作为从库中加载它们的地图的基础,并将数据转换为阵列,并将每个像素的数据作为单独的图块。实质上,如果我的数组中有一个128x128像素的PNG像素,绿色像素被转换为“GRASS”,那么我可以在阵列中循环并相应地将贴图添加到地图动画片段。如何将PNG图像转换为数组?
我看过ByteArray类,我似乎无法将数据解码为可用格式。如果有人有解决方案来做到这一点,请让我知道。
我正在尝试制作基于瓦片的AS3游戏,该游戏使用PNG图像作为从库中加载它们的地图的基础,并将数据转换为阵列,并将每个像素的数据作为单独的图块。实质上,如果我的数组中有一个128x128像素的PNG像素,绿色像素被转换为“GRASS”,那么我可以在阵列中循环并相应地将贴图添加到地图动画片段。如何将PNG图像转换为数组?
我看过ByteArray类,我似乎无法将数据解码为可用格式。如果有人有解决方案来做到这一点,请让我知道。
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通道。
令人惊叹!完美的作品,谢谢。 – PROWNE 2011-12-19 23:35:00
到目前为止您尝试过什么?它如何没有按预期工作?或者你期望社区为你做你的工作?请阅读[常见问题]查看我们喜欢回答的问题以及我们不知道的问题。 :)哦,并欢迎来到StackOverflow:D – 2011-12-19 05:49:07
只是好奇,但这个问题启发了Notch做了什么? – 2011-12-19 06:35:00
@PranavHosangadi:我尝试使用ByteArray类尝试输出一串字符,我可以手动将其转换为屏幕上的可见地图,但我找不到解码可正常工作的PNG的方法。 @ Adam:不,因为我会制作相当大的地图,所以视觉表现会是最容易创建和管理的。 – PROWNE 2011-12-19 23:23:23