|
|
|||||
[+ 1.0 08.10.14]
блогер
Регистрация: Mar 2010
Адрес: x = stage.stageWidth/2 y= stage.stageHeight/2
Сообщений: 293
Записей в блоге: 2
|
двигать поле с помощью захвата мыши
Коллеги, привет. Задача очень простая, но не могу справиться.
Есть некое изометрическое поле (просто спрайт). При захвате мыши в любой точки необходимо двигать поле по направлению обратному от мыши. То есть если пользователь захватил экран и двинул мышь вправо и вниз необходимо подвинуть поле влево и вверх. Извиняюсь за такой глупый вопрс, три года не писал код, все забыл. Пустаюсь в координатах мыши и поля. |
|
|||||
Цитата:
Нужно фиксировать предыдущее положение мыши, и смотреть на сколько пикселей изменились координаты сейчас. И вот уже эти числа реверсировать. Общая идея: package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; public class TestClass extends Sprite { private var _dragField: Sprite = new Sprite(); private var _mouseDown: Boolean = false; private var _prevX: int = -1; private var _prevY: int = -1; public function TestClass() { _dragField.graphics.beginFill(0x80FF00); _dragField.graphics.drawRect(0, 0, 200, 200); _dragField.graphics.endFill(); _dragField.x = _dragField.y = 100; addChild(_dragField); stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp); addEventListener(Event.ENTER_FRAME, onEnterFrame); } private function onEnterFrame(e:Event):void { if (_mouseDown) { _dragField.x -= (mouseX - _prevX); _dragField.y -= (mouseY - _prevY); _prevX = mouseX; _prevY = mouseY; } } private function onMouseUp(e:MouseEvent):void { _mouseDown = false; } private function onMouseDown(e:MouseEvent):void { _prevX = mouseX; _prevY = mouseY; _mouseDown = true; } } }
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
[+4 06.05.14]
|
Цитата:
__________________
Марк Tween |
|
|||||
[+1 22.07.14]
[+4 12.08.14] [+1 09.02.15] Регистрация: May 2014
Сообщений: 182
|
Цитата:
|
|
|||||
Цитата:
Цитата:
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
Цитата:
Не, тут EnterFrame лучше. Во-первых можно не двигать объект каждый раз, достаточно маленькую проверку ввести на изменение координат. Не изменились - не двигаем, доп. условие к if оператору, а во-вторых кто вообще двигает фон строго по движению мышки? В реальных приложениях это смотрится убого. Я показал ему лишь общую идею, но в реальном приложении сюда можно прикрутить плавное затухание, к примеру и/или плавный разгон, ну или эластичное движение как в твинах. Да и многое другое можно делать в этом же обработчике, тех же персонажей перемещать. Так что не надо тут приклеивать свой MouseMove) В его обработчике не обсчитаешь все вышеперечисленное.
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
.
|
Цитата:
Перерисовываем после Event.RENDER. Flow такой. |
Часовой пояс GMT +4, время: 16:33. |
|
« Предыдущая тема | Следующая тема » |
|
|