![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Добрый вечер.
Возникла такая задача: Есть исходная битмапа - некая внешняя PNG картинка c альфа каналом. Нужно как-то задать ей кастомную область реагирования на события мыши вне зависимости от параметров исходной битмапы. Возникла идея сделать для этой картинки что то наподобие маски - ее дубликат состоящий из двух цветов. Один цвет - активная область картинки для событий мыши, второй цвет - неактивная. В итоге загружаем картинку + эту двухцветную маску, и нужно как-то исходной картинке назначить областью реагирования нашу двухцветную маску с учетом цвета пикселов. Типа как hitArea для Sprite, но весь контент должен быть внешним, из битмап. Если неактивную область маски сделать прозрачной, то можно заюзать hitTest в BitmapData, но для этого маска должна лежать на сцене и быть видимой. Вобщем что-то тупик какой-то. Может можно все сделать проще? Подскажите пожалуйста.
__________________
Стой! Опасная зона! Работа мозга! |
|
|||||
|
Регистрация: Jan 2003
Адрес: Latvia, Riga
Сообщений: 161
|
Из тонны, текста я понял, что нужно сделать hitTest для подгружаемой png? Щелкнул мышью по картинке, попал в прозрачность = false, попал в рисунок = true. (просто хочу прояснить картину). Если все так, то можно использовать getPixel
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
И да, getPixel32 быстрее будет, чем hitTest. |
|
|||||
|
Цитата:
Нужен именно чтобы кастомный hitTest был, вне зависимости от альфы исходной картинки. Т.е. исходная может быть в каком-то месте прозрачна, но там она должна быть активна. Цитата:
Да, вот тут тоже подумали с товарищем... Помещаем исходную картинку на сцену, отлавливаем в ней событие мыши, снимаем Point с нужными координатами и проецируем данную точку на битмапу-маску. А там уже с помощью getPixel(32) делаем проверку на то, куда мы попали. Нормальный способ же? Ничего вроде сильно страшного не делаем...
__________________
Стой! Опасная зона! Работа мозга! |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Так и не понял, при чем тут вообще битмап. Есть картинка, а есть "кнопка" НАД картинкой. На кнопке нарисовали все что надо с нулевой альфой и ловите клики с нее, а не с картинки.
Добавлено через 4 минуты А, понял. "Маска" у вас не может быть векторной, загружается вместе с картинкой.. тогда конечно, взяли координаты клика и сравнили с пикселем "маски" (я бы сказал "карты") И незачем 32бита, просто черный/белый двухцветный гиф, весит копейки.
__________________
Reality.getBounds(this); |
|
|||||
|
Да, так и сделаю. Всем спасибо.
__________________
Стой! Опасная зона! Работа мозга! |
![]() |
![]() |
Часовой пояс GMT +4, время: 10:39. |
|
|
« Предыдущая тема | Следующая тема » |
|
|