Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Клик на нерозрачной области (http://www.flasher.ru/forum/showthread.php?t=97855)

Arsenium 01.07.2007 12:12

Клик на нерозрачной области
 
Вывожу на экран несколько картинок, затем ставлю событие клик на контейнеры, содержащий картинки.
Проблема в том, что картнки перекрываются так, что под прозрачной областью одной картинки может лежать непрозрачная область другой. Соответственно при клике на такой области возникает событие клик на картинке с прозрачной областью.
Можно ли сделать, чтобы событие возникало на картинке с непрозрачной областью?

etc 01.07.2007 12:15

Можно попробовать найти на картинке все прозрачные пиксели, создать из них маску, наложить на картинку…

WindWalker 05.07.2007 16:12

Решение с масочкой - очень не простое...

Первый вариант - для каждого непрозрачного пикселя картинки рисовать на маске зарашенный квадратик 1x1.
Кроме того, что сам процес создания такой маски займёт прилично времени, из-за неё ещё и сильно просядет производительность, потому что, насколько я понял, пересекающиеся заливки одного цвета объединяются только в оболочке.
При рисовании в run-time получится маска состоящая из нескольких тысяч (может даже и сотен тысяч) отдельных квадратиков.


Другой вариант - найти пограничные пиксели и прочертить контур чисто по ним. Но и сам поиск таких пикселей не прост, и есть риск получить нежелательные пересечения, в результате которых заливка получится неправильной.

Вот если бы можно было узнать все мувики, которые пересекают определённую точку экрана...


P.S.
А хотя вру... Вторым способом построить не так сложно.
Бежим по всем пикселям. Если пиксель не прозрачный, то сравниваем его с соседями.
Если сосед прозрачный, рисуем между ними отрезок длиной 1 пиксель.

Когда пробежим по всем пикселям, по идее должна получится фигура, которая нормально закрасится.

__i 05.07.2007 17:32

Цитата:

Сообщение от WindWalker
Вот если бы можно было узнать все мувики, которые пересекают определённую точку экрана...

Sprite.getObjectsUnderPoint(point);

WindWalker 05.07.2007 18:25

Тогда можно использовать такой подход (тоже правда геморройный):
при обработке клика, проверяем пиксель в который кликнули.
Если он прозрачный, находим спрайт или мувик находящийся ниже и отправляем событие ему.


Часовой пояс GMT +4, время: 18:52.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.