2012-03-07 20 views
0

如何通過actionscript3,而不是崩潰(獲取閃光燈時),我可以得到一個位圖的所有十六進制顏色的列表。如何獲取位圖所有十六進制顏色的列表?

此位圖it's沒有可拓(340x230)

感謝

+0

你想要什麼類型的輸出做?一個十六進制數字的數組?你爲什麼需要這個?我假設你想要獨特的顏色(不重複)? – Cameron 2012-03-07 04:24:00

+0

一個沒有重複的數組 – 2012-03-07 04:28:02

+0

我需要它使這個顏色的位圖區域可以在探路者中走路 – 2012-03-07 04:29:01

回答

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 「吸」,它是一個簡單的問題。如果你崩潰,你做錯了什麼。

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 2012-03-07 05:24:09

+0

AS3是一種垃圾收集語言,你不能丟棄東西。 GC將盡其所能完成所有工作。 – 2012-03-07 05:26:31

+0

嗯,真的,雖然我對於讓那個巨大的物體只是冷靜地呆在那裏感到不安,直到GC醒來 - 也許只是至少清理它而已? – Marty 2012-03-07 05:28:08

相關問題