1

海,我是actionscript的新手。

我正在尝试在 actionscript 3 中制作画笔工具,孩子们可以使用画笔在圆圈内绘制颜色。我已经使用线条样式实现了这一点。现在我希望画笔在孩子即将完成时(比如当他们完成绘画完成 95% 时)来捕捉颜色。我怎么知道孩子在圆圈上画了多少?

谢谢

4

1 回答 1

1

我怎么知道孩子在圆圈上画了多少?

你可以:

  • 让你的圆圈和其他形状的 Sprite 获得单独的容器
  • 将它们渲染成位图并计算其中不透明像素的数量(您应该知道什么数字对应于 100%)
  • 由于计算像素是一项繁重的操作(可能需要数百毫秒,具体取决于形状大小),因此您不想在每一帧上都运行它。我建议在孩子完成下一次击球后立即在 MOUSE_UP 上执行此操作。

如何计算像素:

function countPixels(shape:DisplayObject):int
{
    var bd:BitmapData = new BitmapData(shape.width, shape.height);
    bd.draw(shape);

    //here you get sequence of ARGB-packed colors in vector
    var pixels:Vector.<uint> = bd.getVector(bd.rect);

    //AFAIK, fastest method to traverse vector is 'for' loop
    var pixel:uint;
    var filledCount:int = 0;
    for (var i:int = pixels.length - 1; i >= 0; i--)
    {
        pixel = pixels[i];
        //pixel is 32-bit ARGB color value, test upper 8 bits (alpha):
        if ((pixel >> 24) > 0) filledCount++;
    }
    return filledCount;
}

在填充形状上运行此命令以获得要比较的总像素数。
pixelCount 达到 95% 后,您可以清除孩子的绘图并显示填充形状。

于 2011-04-11T07:41:19.937 回答