Показать сообщение отдельно
Старый 09.04.2009, 16:55
IDimitry вне форума Посмотреть профиль Найти все сообщения от IDimitry
  № 1  
Ответить с цитированием
IDimitry
Banned

Регистрация: Mar 2009
Сообщений: 93
По умолчанию Вопросы по перетаскивание сложного мувика

Давно столкнулся с этим вопросом, но отставил "на потом" мелкие вопросы наподобие этого. Вот, пришло время и до них ...

1. В библиотеке находятся мувики, преобразованные из битмепа круглой (овальной) формы. Они программно добавляются на сцену и их можно перетаскивать. Само собой, раз мувик построен на битмепе, то его можно "брать" как за видимые части (круг, овал), так и за углы, что, собственно, нелогично и не очень удобно.
Для себя я вижу несколько направлений реализации механизма отлова нажатия мыши на видимой части:
- проверка на прозрачность пиксела мувика, на котором сделан клик;
- задать для мувика свойство hitArea, которое будет указывать на скрытый спрайт с векторным шаблоном, повторяющим форму видимой части перетаскиваемого мувика;
- задать свойство mask для мувика и обрабатывать его события (эта идея самая сырая и схожа с предыдущей, так как также надо рисовать векторный шаблон-маску, только инвертированную - на невидимые части).

Наверняка кто-то сталкивался с подобной реализацией. По какому пути лучше пойти? - Особенно в плане быстроты анализа клика. А также, возможно, есть другой (другие) способы "борьбы" с этой проблемой.

2. При перетаскивании мувика он двигается рывками, как бы постоянно доганяя курсор мыши. С одной стороны, перетаскиваемые мувики очень малы - почему бы им не перерисовываться быстрее, да и комп, где тестируется, достаточно мощный, а с другой стороны - бекграунд флешки - это сплошной битмеп, с чем, возможно, можно связать неплавность движения мувика.

Можно ли побороть это рывчатое движение? - Возможно, надо просто делать мои мувики на время перетаскивания курсорами мыши?

3. Следствие первых двух, а также мой недавний переход на AS3 с его "слегка измененной" событийной моделью.
Пример: мувики находятся друг над другом так, что невидимый уголок верхнего находится над нижним. При нажатии на уголок верхнего событие все равно должен получить нижний мувиклип. Я так понимаю, что при задании hitArea все и так заработает (событие фактически получает шаблон, а на нем клика не было), а вот если через анализ прозрачности, то надо "передать клик" нижнему мувику - так сказать, выполнить диспетчеризацию события (?). Как на практике это делается?

Спасибо за советы.