获取movieClip的颜色

时间:2013-04-12 09:02:54

标签: actionscript-3 flash actionscript

我想从动画片段中获取颜色。我正在使用以下代码:

for (var j = 0; j <bmpd.width; j++)
{
    for (var k = 0; k <bmpd.height; k++)
    {
        trace("0x"+bmpd.getPixel(j,k).toString(16))
    }
}

这里的Circle是一个MovieClip.please指导我

2 个答案:

答案 0 :(得分:3)

要在某个点或范围内获得MovieClip上的颜色,您应该创建一个所需容量的透明BitmapData(点为1x1),用0x0颜色填充它,然后创建一个变换矩阵,对齐(0,0) BitmapData到您所在区域的左上角,然后在位图上绘制MC,然后您可以查询其像素。一个例子(一点):

private static var hitTestBD:BitmapData=new BitmapData(1,1,true,0);
private static vat hitTestMatrix:Matrix=new Matrix(); 
public static function getMCColor(mc:DisplayObject,tx:Number,ty:Number):uint {
    hitTestMatrix.identity();
    hitTestMatrix.translate(-1*tx,-1*ty); // aligning
    hitTestBD.fillRect(hitTestBD.rect,0x0);
    hitTestBD.draw(mc,hitTestMatrix);
    return hitTestBD.getPixel32(0,0);
}

答案 1 :(得分:2)

您必须提取颜色通道:

for (var j = 0; j < bmpd.width; j++) {
    for (var k = 0; k < bmpd.height; k++) {
        // Read the pixel color
        var color:uint = bmpd.getPixel(j, k);

        // Read color channel values
        var alpha:uint = color >> 24 & 0xFF;
        var red:uint   = color >> 16 & 0xFF;
        var green:uint = color >> 8 & 0xFF;
        var blue:uint  = color & 0xFF;

        // Reassemble the color
        trace("color: 0x" + red.toString(16) + green.toString(16) + blue.toString(16));
        trace("alpha: 0x" + alpha.toString(16));
    }
}