![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Вообще у меня вопрос к опытным флешарам - Вы пользуетесь startDrag() ?
Прекрастно подходит для кнопок, и когда ТС указал на мою невнимательность, я первое что хотел воплотить это именно stopPropagation(). Но если его повесить на перетаскиваемый обьект, то он срабатывает от рывков. А если на что то другое, то обработчик событий не видет родителя таргет. |
|
|||||
|
[+1 25.10.13]
[+4 18.03.14] |
Ещё ребенок должен сообщить x,y дельты перемещений родителю
Добавлено через 1 минуту это задача вариант трансформер менеджера |
|
|||||
|
Регистрация: Jun 2013
Сообщений: 133
|
Что Вас в нем так напугало?
|
|
|||||
|
[+1 25.10.13]
[+4 18.03.14] |
Вы вероятно не поняли вопрос. Драгается ребенок, а родитель смещается на то расстояние, на которое смещается ребенок. Сам фон не драгается. Поэтому ему стоп драг не нужен.
|
|
|||||
|
Регистрация: Jan 2012
Сообщений: 97
|
не кто не дёргается, рывки происходят при выходе мыши за стэйдж и возвращении назад в другом месте, основная проблема что происходит срыв мыши когда тянешь за ребёнка
|
|
|||||
|
Регистрация: Jun 2013
Сообщений: 133
|
Видать я действительно что то не так понял. По первому посту и коду в нем подумал, что перемещаем именно родителя. Смысл двигать ребенка > потом двигать родителя > двигать всех остальных детей
Добавлено через 3 минуты kelod, я привел пример кода, попробуйте его. |
|
|||||
|
Регистрация: Jan 2012
Сообщений: 97
|
мне вообще-то и нужно двигать родителя, но поверх родителя ребёнок, посему захватывает событие именно дитё, а не родитель((
|
|
|||||
|
Регистрация: Jun 2013
Сообщений: 133
|
kelon, Ваш доработанный код:
addChild(fon); fon.addChild(spt1); fon.addChild(spt2); fon.addChild(spt3); fon.addEventListener(MouseEvent.MOUSE_DOWN, nach); fon.addEventListener(MouseEvent.MOUSE_UP, kon); fon.addEventListener(MouseEvent.MOUSE_OUT, kon); |
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Вот почему при таком подходе, если быстро дергать мышкой, то драг срывается?
package { import flash.display.DisplayObject; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.geom.Point; public class Drag extends Sprite { private var _container:Sprite; private var _spriteArray:Vector.<Sprite>; private var _conteinersArray:Vector.<Sprite>; private var _distantion:Point; private var _target:Sprite; public function Drag() { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(event:Event=null):void { removeEventListener(Event.ADDED_TO_STAGE, init); _conteinersArray = Vector.<Sprite>([]); this.addEventListener(MouseEvent.MOUSE_DOWN, this_mouseDownHandler); _container = new Sprite(); _container.name = 'con'; _conteinersArray.push(_container); super.addChild(_container); var circle:Sprite; _spriteArray = Vector.<Sprite>([]); for (var i:int = 0; i < 10; i++) { circle = new Sprite(); circle.graphics.beginFill(Math.random() * 0xf6f6f6); circle.graphics.drawCircle(Math.random() * stage.stageWidth, Math.random() * stage.stageHeight, 30); circle.graphics.endFill(); _spriteArray.push(circle); _container.addChild(_spriteArray[i] as DisplayObject); } } private function this_mouseDownHandler(event:MouseEvent):void { if (_conteinersArray.indexOf(event.target > 0)) { trace('good'); this.addEventListener(MouseEvent.MOUSE_UP, this_mouseUpHandler); this.addEventListener(MouseEvent.MOUSE_MOVE, this_mouseMoveHandler); _target = event.target.parent as Sprite; _distantion = new Point(event.localX, event.localY); } } private function this_mouseUpHandler(event:MouseEvent):void { trace('up'); this.removeEventListener(MouseEvent.MOUSE_UP, this_mouseUpHandler); this.removeEventListener(MouseEvent.MOUSE_MOVE, this_mouseMoveHandler); event.stopPropagation(); } private function this_mouseMoveHandler(event:MouseEvent):void { _target.x = mouseX - _distantion.x; _target.y = mouseY - _distantion.y; event.updateAfterEvent(); } } } |
|
|||||
|
Регистрация: Jun 2013
Сообщений: 133
|
Akopalipsis, потом что событие MOUSE_MOVE висит на спрайте, который закрашен кружками, соответственно оно диспачится только когда вы водите над ними.
замените: на: |
![]() |
![]() |
Часовой пояс GMT +4, время: 07:59. |
|
|
« Предыдущая тема | Следующая тема » |
|
|