![]() |
|
||||||||||
|
|||||
|
Регистрация: Nov 2009
Сообщений: 176
|
Приветствую! Возникла следующая проблема.
Я делаю эффект ластика: есть картинка, на неё накладывается мувик, потом этот мувик стирается пока картинка не будет видна полностью. По сути получается наоборот, я рисую маску через которую видно картинку. Как узнать что картинку полностью видно? var flag:Boolean = false; var mymask:Sprite = new Sprite(); addChild(mymask); mypic.mask = mymask; stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDowns); stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMoves); stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUps); function onMouseDowns(event:MouseEvent):void { flag = true; } function onMouseUps(event:MouseEvent):void { flag = false; } function onMouseMoves(event:MouseEvent):void { if (flag) { mymask.graphics.beginFill(0x000000); mymask.graphics.drawCircle(mouseX, mouseY, 40); mymask.graphics.endFill(); } } |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 1,540
|
Есть методы конечно, но это все очень и очень напрягает голову и ЦП, так что забудь
![]() Может кто другой подскажет, и мне интересно будет. |
|
|||||
|
Регистрация: Nov 2010
Сообщений: 434
|
как вариант пройтись по всем пикселям маски и проверить их на прозрачность, ток как реализовать пусть кто нить другой напишет)
причём как только обнаружиться первый не прозрачный пиксель остановить цикл, да ещё б я начал проверку с 4 угловых пикселей, ну а потом уже все остальные Последний раз редактировалось ЗлОй ПрОграММер; 07.03.2012 в 21:29. |
|
|||||
|
Как вариант: вместо спрайта в качестве маски используете Bitmap. На битмапдате которого рисуете что-то (либо пиксели (setPixel/setPixel32), либо например любой экранный объект (draw) в качестве кисти). И когда требуется проверка, пробегаетесь по пикселям bitmapData (getPixel/getPixel32). Ну и как вариант (совершенно не обязательно), опять же, вместо маски можно использовать BlendMode.ERASE. По идее проблем будет меньше. Ну и скорее всего есть еще какие-то варианты/вариации.
__________________
http://www.chessmax.ru Последний раз редактировалось Inet_PC; 07.03.2012 в 22:14. |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 1,540
|
Цитата:
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
BitmapData#getColorBoundsRect()
проверяем на альфу, или на цвет которым закрашивается маска (точнее, на отсутствие цвета))
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Mar 2007
Сообщений: 319
|
BitmapData#compare() мне кажется лучше это, "Если объекты BitmapData идентичны (имеют одинаковую высоту, ширину и значения пикселей), метод возвращает значение 0." ели ещё перед этим скелить BitmapData основную и текущую то будет значительно быстрее хеша
Последний раз редактировалось Nooob; 08.03.2012 в 03:58. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Nov 2009
Сообщений: 176
|
а можно увидеть какой то пример исходя из моих исходников?
|
![]() |
![]() |
Часовой пояс GMT +4, время: 13:49. |
|
|
« Предыдущая тема | Следующая тема » |
|
|