Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   MouseEvent и Alpha в Bitmap (http://www.flasher.ru/forum/showthread.php?t=171152)

kodo 09.11.2011 23:35

MouseEvent и Alpha в Bitmap
 
Можно ли заставить корректно работать События мыши с расторовой альфой?

Суть в том что Флеш игнорирует наличие альфы у картинок. И к примеру если есть спрайт содержащий картинку кольца, а позади него ещё какой-то спрайт, как раз внутри этого кольца. То выходит так что мы видим этот задний спрайт но клики, которые казалось бы по нему, срабатывают по верхнему спрайту(кольцу). Отключить маусэвенты у верхнего спрайта - не вариант.
Также хочется сохранить правильную цепочку передачи события(по всем контейнерам)..

Я нагуглил и нашёл несколько способов:
1) сторонняя "библиотека" InteractivePNG http://blog.mosessupposes.com/?p=40 - в примере работает достаточно хорошо, но я не любитель сторонних библиотек и классов, ввиду чёрного ящика.
2) создать векторную альфу для изображения и засунуть её в маску - работает идеально, но есть такие минусы как: лишняя работа по созданию масок, лишний спрайт для маски - да и вообще вектор штука медленная.
3) Использовать getObjectsUnderPoint - получить список всех обьектов, проверить альфы и найти требуемый. - но как в таком случае правильно возбудить событие чтобы оно пошло по всей цепочки контейнеров?

Возможно кто знает ещё какой-то способ, как бы так отделаться малой кровью?

goodguy 10.11.2011 00:05

Цитата:

но я не любитель сторонних библиотек и классов, ввиду чёрного ящика.
В чем там черный ящик? Там открытый исходный код, можно все посмотреть и подправить при необходимости.
В InteractivePNG есть один косяк с уничтожением созданной битмапы. Я для себя малость подправил этот класс, и теперь все уничтожается полностью. Плюс, раз уж не хочется использовать сторонние библиотеки, то почему бы просто не подсмотреть там решение? Там используются только стандартные методы.

Котяра 10.11.2011 01:32

Цитата:

Я для себя малость подправил этот класс, и теперь все уничтожается полностью.
А осветить это решение и послать автору?

kodo 10.11.2011 01:34

Всё верно говорите, надо поковырять этот ящик и будет уже не чёрный.
лень просто такая штука, и надежда: а вдруг пропустил что-то тривиальное...

alatar 10.11.2011 01:48

kodo, ну напишите свою реализацию. Будет лучше, начнут использовать вашу. Если вы и дальше будете избегать сторонних библиотек, то сильно увеличите сроки разработки.

goodguy 10.11.2011 08:57

Цитата:

Сообщение от Котяра (Сообщение 1044964)
А осветить это решение и послать автору?

за меня уже ответили в этой теме :D
Цитата:

лень просто такая штука
)
Короче говоря мне просто в лом =)

zuxul 10.11.2011 11:16

Вариант использовать свойство Sprite#hitArea.
http://www.flasher.ru/forum/showthread.php?t=149820 - там примерчик.


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

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