|
|
|||||
[+1 28.12.10]
[+1 29.12.10] Регистрация: Aug 2006
Сообщений: 107
|
нормальный драг во флеш
уже долгое время не могу реализовать нормальный драг во флеш.
чем плох стандартный startDrag stopDrag: если предмет маленкий. взял предмет. помохал мышкой. предмет оказался не под мышкой. отпустил мышу. а предмет никак не отцепится. это совсем не смешно. невозможно ограничить движение обьекта по пути есди путь не горизонтальная и вертикальная линия. второе не так важно в данный момент для меня. но первое как то нужно решать. уна одном сайте нашел предложения поставить stopDrag на событие ROLL_OUT но тогда чуть мышу дернул обьект отвалился. |
|
|||||
Цитата:
Цитата:
Добавлено через 1 минуту Цитата:
|
|
|||||
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
Цитата:
либо MOUSE_MOVE, либо ENTER_FRAME, либо TIMER Умом понять не могу, но в разных приложениях почему-то все по-разному происходит. Бывает, что на MOUSE_MOVE возникает ощущение, что объект "не успевает" за мышкой, а по ENTER_FRAME нормально двигается. |
|
|||||
Цитата:
|
|
|||||
[+1 28.12.10]
[+1 29.12.10] Регистрация: Aug 2006
Сообщений: 107
|
MOUSE_MOVE почему то не всегда посылается адекватно. логику не уловил, когда посылается а когда нет. возможно если после окончание обработки предыдушего события мышь не перемешалась, то событие не посылаются. в результате если пока обработчик обрабатывал мышька подвинется и остановится новое событие не будет вызвано. поэтому пришлось посадить это на таймер. а идея вешать MOUSE_UP на сцену плюс ловить ROLL_OUT очень полезной оказалось. спасибо.
Добавлено через 3 минуты Цитата:
то что елементарно наверное да. только вот нормальной доки кроме api не нашел. вот и делаю методом тыка и разным мелким статьям)) и это еще додуматься нужно что, у mouseEvent может оказаться функция которая решит проблему. |
|
|||||
я тоже методом startDrag никогда не пользуюсь.
Делаю что-то подобное private function onEnterFrame(e:Event):void { //TODO оптимизировать this.field.x = this.mouseX-this.clickPoint.x; this.field.y = this.mouseY-this.clickPoint.y; if (this.field.x > 0) { this.field.x = 0; } if (this.field.y > 0) { this.field.y = 0; } if (this.field.x < this.stage.stageWidth - this.field.width) { this.field.x = this.stage.stageWidth - this.field.width; } if (this.field.y < this.stage.stageHeight - this.field.height) { this.field.y = this.stage.stageHeight - this.field.height; } }
__________________
Сам себе репортер |
Часовой пояс GMT +4, время: 01:27. |
|
« Предыдущая тема | Следующая тема » |
|
|