Actionscript 3 如何在Actionscript 3.0中捕捉线条样式?

Actionscript 3 如何在Actionscript 3.0中捕捉线条样式?,actionscript-3,bitmap,brush,linestyle,snapping,Actionscript 3,Bitmap,Brush,Linestyle,Snapping,海,我是动作脚本的新手 我正在尝试在ActionScript3中制作一个画笔工具,孩子们可以使用画笔在圆圈内绘制颜色。我使用linestyle实现了这一点。现在,我想让画笔在孩子即将完成时捕捉颜色(比如说,当他们95%完成绘画时)。我怎么知道那孩子在圆圈上画了多少 谢谢 我怎么知道这孩子有多少钱 画在圆圈上 你可以: 使你的圆圈和其他形状精灵得到单独的容器 将它们渲染成位图,并计算其中的非透明像素数(您应该知道哪个数字对应于100%) 由于计算像素是一项繁重的操作(可能需要数百毫秒,具体取决于

海,我是动作脚本的新手

我正在尝试在ActionScript3中制作一个画笔工具,孩子们可以使用画笔在圆圈内绘制颜色。我使用linestyle实现了这一点。现在,我想让画笔在孩子即将完成时捕捉颜色(比如说,当他们95%完成绘画时)。我怎么知道那孩子在圆圈上画了多少

谢谢

我怎么知道这孩子有多少钱 画在圆圈上

你可以:

  • 使你的圆圈和其他形状精灵得到单独的容器
  • 将它们渲染成位图,并计算其中的非透明像素数(您应该知道哪个数字对应于100%)
  • 由于计算像素是一项繁重的操作(可能需要数百毫秒,具体取决于形状大小),因此您不希望在每一帧上运行它。我建议在孩子完成下一次击球后,在滑鼠上做
如何计算像素:

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;
}
函数countPixels(形状:DisplayObject):int
{
var bd:BitmapData=新的BitmapData(shape.width、shape.height);
bd.draw(形状);
//这里你可以得到向量中的ARGB压缩颜色序列
变量像素:向量=bd.getVector(bd.rect);
//首先,遍历向量的最快方法是“for”循环
var像素:uint;
变量filledCount:int=0;
对于(变量i:int=pixels.length-1;i>=0;i--)
{
像素=像素[i];
//像素为32位ARGB颜色值,测试上8位(alpha):
如果((像素>>24)>0)filledCount++;
}
返回已填充计数;
}
在填充形状上运行此操作,以获得要与之比较的总像素计数。
当pixelCount达到95%后,您可以清除孩子的绘图并显示填充形状

我怎么知道这孩子有多少钱 画在圆圈上

你可以:

  • 使你的圆圈和其他形状精灵得到单独的容器
  • 将它们渲染成位图,并计算其中的非透明像素数(您应该知道哪个数字对应于100%)
  • 由于计算像素是一项繁重的操作(可能需要数百毫秒,具体取决于形状大小),因此您不希望在每一帧上运行它。我建议在孩子完成下一次击球后,在滑鼠上做
如何计算像素:

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;
}
函数countPixels(形状:DisplayObject):int
{
var bd:BitmapData=新的BitmapData(shape.width、shape.height);
bd.draw(形状);
//这里你可以得到向量中的ARGB压缩颜色序列
变量像素:向量=bd.getVector(bd.rect);
//首先,遍历向量的最快方法是“for”循环
var像素:uint;
变量filledCount:int=0;
对于(变量i:int=pixels.length-1;i>=0;i--)
{
像素=像素[i];
//像素为32位ARGB颜色值,测试上8位(alpha):
如果((像素>>24)>0)filledCount++;
}
返回已填充计数;
}
在填充形状上运行此操作,以获得要与之比较的总像素计数。

在像素数达到95%后,您可以清除孩子的绘图并显示填充的形状。

他们已经开始工作了。。。我面临的另一个问题是“孩子可以用不同的颜色重新油漆”。因此,我使用getpixel()获取像素颜色并进行计算。现在它工作得很好:)谢谢你的回复:)嘿,这个工作起来了。。。我面临的另一个问题是“孩子可以用不同的颜色重新油漆”。因此,我使用getpixel()获取像素颜色并进行计算。它现在工作得很好:)谢谢你的回复:)