![]() |
MouseEvent и Alpha в Bitmap
Можно ли заставить корректно работать События мыши с расторовой альфой?
Суть в том что Флеш игнорирует наличие альфы у картинок. И к примеру если есть спрайт содержащий картинку кольца, а позади него ещё какой-то спрайт, как раз внутри этого кольца. То выходит так что мы видим этот задний спрайт но клики, которые казалось бы по нему, срабатывают по верхнему спрайту(кольцу). Отключить маусэвенты у верхнего спрайта - не вариант. Также хочется сохранить правильную цепочку передачи события(по всем контейнерам).. Я нагуглил и нашёл несколько способов: 1) сторонняя "библиотека" InteractivePNG http://blog.mosessupposes.com/?p=40 - в примере работает достаточно хорошо, но я не любитель сторонних библиотек и классов, ввиду чёрного ящика. 2) создать векторную альфу для изображения и засунуть её в маску - работает идеально, но есть такие минусы как: лишняя работа по созданию масок, лишний спрайт для маски - да и вообще вектор штука медленная. 3) Использовать getObjectsUnderPoint - получить список всех обьектов, проверить альфы и найти требуемый. - но как в таком случае правильно возбудить событие чтобы оно пошло по всей цепочки контейнеров? Возможно кто знает ещё какой-то способ, как бы так отделаться малой кровью? |
Цитата:
В InteractivePNG есть один косяк с уничтожением созданной битмапы. Я для себя малость подправил этот класс, и теперь все уничтожается полностью. Плюс, раз уж не хочется использовать сторонние библиотеки, то почему бы просто не подсмотреть там решение? Там используются только стандартные методы. |
Цитата:
|
Всё верно говорите, надо поковырять этот ящик и будет уже не чёрный.
лень просто такая штука, и надежда: а вдруг пропустил что-то тривиальное... |
kodo, ну напишите свою реализацию. Будет лучше, начнут использовать вашу. Если вы и дальше будете избегать сторонних библиотек, то сильно увеличите сроки разработки.
|
Цитата:
Цитата:
Короче говоря мне просто в лом =) |
Вариант использовать свойство 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
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.