我想从影片剪辑中获取颜色。我正在使用以下代码:
for (var j = 0; j <bmpd.width; j++)
{
for (var k = 0; k <bmpd.height; k++)
{
trace("0x"+bmpd.getPixel(j,k).toString(16))
}
}
这里的圆圈是一个电影剪辑。请指导我
我想从影片剪辑中获取颜色。我正在使用以下代码:
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 上的颜色,您应该创建一个所需容量的透明 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);
}
您必须提取颜色通道:
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));
}
}