2011-12-19 4 views
0

저는 PNG 이미지를 라이브러리에서로드하는지도의 기본으로 사용하는 타일 기반 AS3 게임을 만들고 데이터의 각 픽셀이 개별 타일 인 배열로 데이터를 변환하려고합니다. 근본적으로 말하자면 녹색 픽셀이 내 배열에서 "GRASS"로 변환되는 128x128 픽셀 PNG가있는 경우 어레이를 순환하고 이에 따라지도 무비 클립에 타일을 추가 할 수 있습니다.PNG 이미지를 배열로 변환하는 방법?

나는 ByteArray 클래스에서 살펴본 가능한 형식으로 데이터를 디코딩 할 수없는 것. 누구든지이 작업을 수행 할 수있는 해결책이 있다면 알려 주시기 바랍니다.

+2

지금까지 해보신 것은 무엇입니까? 어떻게 예상대로 작동하지 않았습니까? 아니면 지역 사회가 당신을 위해 일하기를 기대합니까? [faq]를 읽고 우리가 어떤 대답을하고 싶지 않은지 질문하십시오. :) 오, 그리고 StackOverflow에 오신 것을 환영합니다 : D –

+0

그냥 호기심,하지만이 문제는 노치가 한 일에서 영감을 얻었습니까? –

+0

@PranavHosangadi : ByteArray 클래스를 사용하여 화면에서 보이는지도로 수동으로 변환 할 수있는 문자열을 출력하려고했지만 제대로 작동 한 PNG를 디코딩 할 수있는 방법을 찾지 못했습니다. @ Adam : 아니요,지도를 아주 크게 만들므로 시각적 표현이 가장 쉽게 만들고 관리하기 쉽습니다. – PROWNE

답변

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을 사용해야합니다.

+0

놀라운! 완벽하게 작동합니다. 감사합니다. – PROWNE

관련 문제