2013-04-12 50 views
1

我想从动画片段获取颜色。我使用下面的代码:获取movieClip的颜色

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

这里圈是一个MovieClip.please指导我

+0

如果你的'MovieClip'只有一个(固体)颜色,然后使用'ColorTransform'。 –

回答

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)); 
    } 
} 
3

要在得到你的影片剪辑颜色某些点或范围,您应该创建一个所需容量的透明BitmapData(1x1代表点),填充0x0颜色,然后创建一个将BitmapData对齐(0,0)到您的区域左上角的变换矩阵,然后绘制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); 
}