|
Banned
Регистрация: Mar 2009
Сообщений: 93
|
Вопросы по перетаскивание сложного мувика
Давно столкнулся с этим вопросом, но отставил "на потом" мелкие вопросы наподобие этого. Вот, пришло время и до них ...
1. В библиотеке находятся мувики, преобразованные из битмепа круглой (овальной) формы. Они программно добавляются на сцену и их можно перетаскивать. Само собой, раз мувик построен на битмепе, то его можно "брать" как за видимые части (круг, овал), так и за углы, что, собственно, нелогично и не очень удобно.
Для себя я вижу несколько направлений реализации механизма отлова нажатия мыши на видимой части:
- проверка на прозрачность пиксела мувика, на котором сделан клик;
- задать для мувика свойство hitArea, которое будет указывать на скрытый спрайт с векторным шаблоном, повторяющим форму видимой части перетаскиваемого мувика;
- задать свойство mask для мувика и обрабатывать его события (эта идея самая сырая и схожа с предыдущей, так как также надо рисовать векторный шаблон-маску, только инвертированную - на невидимые части).
Наверняка кто-то сталкивался с подобной реализацией. По какому пути лучше пойти? - Особенно в плане быстроты анализа клика. А также, возможно, есть другой (другие) способы "борьбы" с этой проблемой.
2. При перетаскивании мувика он двигается рывками, как бы постоянно доганяя курсор мыши. С одной стороны, перетаскиваемые мувики очень малы - почему бы им не перерисовываться быстрее, да и комп, где тестируется, достаточно мощный, а с другой стороны - бекграунд флешки - это сплошной битмеп, с чем, возможно, можно связать неплавность движения мувика.
Можно ли побороть это рывчатое движение? - Возможно, надо просто делать мои мувики на время перетаскивания курсорами мыши?
3. Следствие первых двух, а также мой недавний переход на AS3 с его "слегка измененной" событийной моделью.
Пример: мувики находятся друг над другом так, что невидимый уголок верхнего находится над нижним. При нажатии на уголок верхнего событие все равно должен получить нижний мувиклип. Я так понимаю, что при задании hitArea все и так заработает (событие фактически получает шаблон, а на нем клика не было), а вот если через анализ прозрачности, то надо "передать клик" нижнему мувику - так сказать, выполнить диспетчеризацию события (?). Как на практике это делается?
Спасибо за советы.
|