如何获取位图的所有十六进制颜色的列表?

时间:2012-03-07 04:09:14

标签: actionscript-3

如何通过actionscript3,并且不会崩溃(获取时闪存卡住),我是否可以获得位图的所有十六进制颜色的列表。

这个位图不是extense(340x230)

由于

2 个答案:

答案 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;
    }
}