Как привязать стиль линии в Actionscript 3.0?

Привет, я новичок в ActionScript.

я пытаюсь создать кисть в ActionScript 3, где дети могут рисовать цвета внутри круга с помощью кисти. я добился этого с помощью linestyle. Теперь я хочу, чтобы кисть сменила цвет, когда ребенок собирается закончить (скажем, когда они на 95% завершат рисование). Откуда я знаю, сколько ребенок нарисовал на круге?

Спасибо

1 ответ

Откуда я знаю, сколько ребенок нарисовал на круге?

Вы можете:

  • сделать ваши круги и другие формы спрайтов, чтобы получить отдельный контейнер
  • визуализировать их в растровое изображение и подсчитать количество непрозрачных пикселей в нем (вы должны знать, какое число соответствует 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%, вы можете очистить детский рисунок и показать заполненную форму.

Другие вопросы по тегам