![]() |
нормальный драг во флеш
уже долгое время не могу реализовать нормальный драг во флеш.
чем плох стандартный startDrag stopDrag: если предмет маленкий. взял предмет. помохал мышкой. предмет оказался не под мышкой. отпустил мышу. а предмет никак не отцепится. это совсем не смешно. невозможно ограничить движение обьекта по пути есди путь не горизонтальная и вертикальная линия. второе не так важно в данный момент для меня. но первое как то нужно решать. уна одном сайте нашел предложения поставить stopDrag на событие ROLL_OUT но тогда чуть мышу дернул обьект отвалился. |
Никогда не пользоваться startDrag stopDrag.
На зажатие вешать обработчик MOUSE_MOVE, по MOUSE_MOVE перемещать, на отжатие убивать обработчик. |
Цитата:
Цитата:
Добавлено через 1 минуту Цитата:
|
Цитата:
либо MOUSE_MOVE, либо ENTER_FRAME, либо TIMER Умом понять не могу, но в разных приложениях почему-то все по-разному происходит. Бывает, что на MOUSE_MOVE возникает ощущение, что объект "не успевает" за мышкой, а по ENTER_FRAME нормально двигается. |
Цитата:
|
Слушатель MOUSE_MOVE вешается на stage. Чтобы MOUSE_EVENT был обработан сразу, нужно в нём выполнить mouseEvent.updateAfterEvent(), ну элементарные же вещи.
|
MOUSE_MOVE почему то не всегда посылается адекватно. логику не уловил, когда посылается а когда нет. возможно если после окончание обработки предыдушего события мышь не перемешалась, то событие не посылаются. в результате если пока обработчик обрабатывал мышька подвинется и остановится новое событие не будет вызвано. поэтому пришлось посадить это на таймер. а идея вешать MOUSE_UP на сцену плюс ловить ROLL_OUT очень полезной оказалось. спасибо.
Добавлено через 3 минуты Цитата:
то что елементарно наверное да. только вот нормальной доки кроме api не нашел. вот и делаю методом тыка и разным мелким статьям)) и это еще додуматься нужно что, у mouseEvent может оказаться функция которая решит проблему. |
я тоже методом startDrag никогда не пользуюсь.
Делаю что-то подобное Код AS3:
|
Цитата:
Код AS3:
|
у startDrag есть второй параметр, который ограничивает область драгания
|
| Часовой пояс GMT +4, время: 16:17. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.