![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Feb 2008
Сообщений: 890
|
Нашел баг, а может и фичу, но очень уж странную.
При перетаскивании объекта target в установленных рамках при отжатии мыши target.mouseX, target.mouseY, stage.mouseX, stage.mouseY имеют значения в точке зажатия объекта для перетаскивания, а не в точке, где была мышь во время дропа. Без установки рамок - все ок. Переместите квадрат так, чтобы он уперся в правый нижний угол своих границ движения, отожмите мышь правее и ниже, чтобы квадрат не съехал из правого нижнего угла. Затем зажимайте мышь в середине квадрата и отпускайте в различных точках экрана, но в секторе ниже и правей, чтобы квадрат не съезжал. Смотрите за значениями в аутпуте - они должны быть примерно одинаковы в различных точках отпускания мыши. var s:Sprite = new Sprite(); addChild(s); s.graphics.beginFill(0); s.graphics.drawRect(0, 0, 100, 100); s.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownListener); function mouseDownListener(e:MouseEvent):void { s.startDrag(false, new Rectangle(0, 0, 100, 100)); //s.startDrag(false, null); - все ок! } stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpListener); function mouseUpListener(e:MouseEvent):void { s.stopDrag(); trace(s.mouseX, s.mouseY); trace(stage.mouseX, stage.mouseY, "\n"); } Как же вытащить реальные координаты мыши во время дропа?
__________________
скриптограф Последний раз редактировалось orcpochta; 20.12.2010 в 16:27. |
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
MouseEvent.MOUSE_MOVE
|
|
|||||
|
Регистрация: Feb 2008
Сообщений: 890
|
Про эти костыли я догадался))) Можно еще короткий таймер наверно включать при дропе, чтобы он уже сверил координаты мыши)))
__________________
скриптограф |
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
это не костыли
события MouseEvent.MOUSE_DOWN и MouseEvent.MOUSE_UP возникают только в начале и конце перетаскивания во время перетаскивания снимаем координаты по событиям: - MouseEvent.MOUSE_MOVE - Event.ENTER_FRAME - TimerEvent.TIMER |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 890
|
если внимательно читать, то интересует именно момент дропа - т.е. событие "MOUSE_UP")))
__________________
скриптограф |
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
Действительно занятное поведение.
Может дело в этом: Цитата:
Если повесить на МаусМув выдачу координат стэйдж.маусИкс/Игрек, то они выдаются правильно, в обработчике mouseUpListener неправильно, а потом - опять правильно. Последний раз редактировалось mikhailk; 20.12.2010 в 18:13. |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 890
|
О, забыл про них)))
UPD: А не, не забыл! Я просто не имею к ним доступа, т.к. подписываюсь на собственное событие компонента, который говорит, что произошло дропанье предмета, и ессно stageX, stageY не передает. Я думал, что можно, конечно, добавить эти поля, но они как-то совсем не к месту там в этом простеньком событии.
__________________
скриптограф Последний раз редактировалось orcpochta; 20.12.2010 в 19:02. |
![]() |
![]() |
Часовой пояс GMT +4, время: 12:33. |
|
|
« Предыдущая тема | Следующая тема » |
|
|