![]() |
Прозрачность спрайтов и hover
Доброго времени суток.
Сразу хочу сказать, что я не профи и только начинаю познавать дао action script. =) Собственно возникла такая проблема. У меня есть кусочки карты нашей планеты (в пнг), и по ховеру на них нужно делать некие действия. Но, предположим, есть вся европа и греция отдельно. Собственно кусочки карты наношу примерно таким кодом: Код AS3:
теперь суть проблемы. греция имеет несколько не квадратную форму, поэтому при наведении на прозрачный пиксель спрайта должно отрабатывать событе hover на подложку (то есть всю европу). спрайты по наведению надо скрывать \ отображать, поэтому bubbling не совсем подходит... В принципе я решил проблему так: * слушаю перемещение мыши по всей сцене * относительно положения курсора мыши проверяю какие из спрайтов "в фокусе" и с ними уже работаю. то, что-то мне подсказывает, я изобрел новый геморрой, поэтому прошу подсказки у сообщества =) |
Не знаю, что заставило Вас использовать Битмап для заливки векторной формы, но лучше отказаться от этого, так как выигрыша при рисовании прямоугольной формы Вы не получаете (то есть, если бы форма региона была отрисована кривыми и совпадала с формой [страны], мышь ловилась бы только на залитой области. Если залит весь прямоугольник, то он весь и ловит мышь). Если возможности отрисовать страны в точные формы нет, Вам придется использовать что-то типа InteractivePNG, то есть создавать не просто спрайты, а наследников специального класса, умеющего различать, находится мышь над прозрачной областью его содержимого или нет.
InteractivePNG универсален, и оттого сильно перегружен. Если нужно решать только судьбу клика или нажатия на объект, можно написать класс намного проще. Код AS3:
|
Цитата:
ИнтерактивПнг помог, спасибо. Поковыряюсь в его коде, может зацеплюсь за умные мысли. В процессе гугления про интерактивпнг наткнулся на топик в котором обсуждалось, что можно ограничить зону реакции мыши в спрайте через hitArea и маску. Сорри за нубский вопрос, но можно ли создать программно некий полигон и использовать его в качестве маски для этих целей? |
Можно.
|
Повторю то, что написано в начале моего сообщения — если у Вас есть возможность создать векторную форму региона (не прямоугольную, а именно по границам региона), то ее можно просто залить битмапдатой, как Вы и делали. Никакая маска тогда не нужна — пустоты итак не будут реагировать на мышь.
|
| Часовой пояс GMT +4, время: 02:33. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.