2011-12-19 12 views
0

私は、ライブラリからロードするマップのベースとしてPNG画像を使用するタイルベースのAS3ゲームを作成しようとしており、データの各ピクセルが個々のタイルである配列にデータを変換します。基本的に、私のアレイで緑色のピクセルが「GRASS」に変換された128x128ピクセルのPNGを持っていた場合は、配列を循環してマップムービークリップにタイルを追加できます。PNGイメージをArrayに変換するには?

私はByteArrayクラスを見てきましたが、データを使用可能なフォーマットにデコードできないようです。誰かがこれを行うための解決策を持っているなら、私に知らせてください。

+2

これまでに何を試しましたか?どのように期待通りに機能していないのですか?あなたのためにあなたの仕事をすることをコミュニティが期待していますか? [faq]を読んで、どんな質問が答えるのか、私たちは答えないのかを見てください。 :)ああ、とStackOverflowへようこそ:D –

+0

ちょうど興味深いが、この質問はノッチが何かに触発されているのですか? –

+0

@PranavHosangadi:ByteArrayクラスを使用して、画面上の表示可能なマップに手動で変換できる文字列を出力しようとしましたが、正常に動作したPNGを復号する方法が見つかりませんでした。 @アダム:いいえ、地図をかなり大きく作成するので、視覚的表現が作成して管理しやすくなります。 – 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

関連する問題