Как привязать стиль линии в Actionscript 3.0? - PullRequest
1 голос
/ 11 апреля 2011

Хай, я новичок в Actionscript.

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

Спасибо

1 Ответ

1 голос
/ 11 апреля 2011

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

Вы можете:

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

...