如何通过actionscript3,并且不会崩溃(获取时闪存卡住),我是否可以获得位图的所有十六进制颜色的列表。
这个位图不是extense(340x230)
由于
答案 0 :(得分: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;
}
}
}
代码未针对错误进行测试。
答案 1 :(得分: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;
}
}