2012-03-07 25 views
0

どのようにして、actionscript3を介して、クラッシュ(フラッシュ中に立ち往生)、私はビットマップのすべての16進数の色のリストを取得できますか?ビットマップのすべての16進色のリストを取得するにはどうすればよいですか?

このビットマップは(340x230)

おかげ

+0

あなたは、出力のどのような種類をしたいですか? 16進数の配列ですか?なぜこれが必要ですか?私はあなたがユニークな色(重複なし)をしたいと思っていますか? – Cameron

+0

重複のない配列 –

+0

この色のビットマップ領域をパスファインダーでウォークできるようにする必要があります –

答えて

2

ベクトルをループするgetPixelメソッドよりも高速になります。

var lookupMap:Object = {}; 
var v:Vector.<uint> = bitmapData.getVector(bitmapData.rect) 
var colors:Array = []; 

for each (var color:uint in v) { 
    if (lookupMap[color] !== true) { 
     colors.push(color); 
     lookupMap[color] = true; 
    } 
} 
2

そのは "吸う" のFlashとは何の関係も、その簡単な問題を抱えていないextenseないit's。あなたのクラッシュ、あなたが何か間違っている場合。

var lookupMap:Object = {}; 
var bmd:BitmapData = somebitmapDataObject; 
var colours:Array = []; 

for(var i:int=0; i<bmd.height; i++) { 
    for(var j:int=0; j<bmd.width; j++) { 
     var colour:uint = bmd.getPixel(j,i); 
     if(lookupMap[colour] !== true) { 
      colours.push(colour); 
      lookupMap[colour] = true; 
     } 
    } 
} 

コードではバグはテストされていません。

+0

最後に 'lookMap'を捨てることを忘れないでください。 – Marty

+0

AS3はガベージコレクション言語です。あなたは物を捨てることはできません。 GCは時間内に必要なすべてを行います。 –

+0

本当に、GCが目を覚ますまでその巨大な物体をちょうど凍らせておくのは不安ですが、少なくともそれをきれいにするのはどうですか? – Marty

関連する問題