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