Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Противоположное движение объекта, перетаскиваемому (http://www.flasher.ru/forum/showthread.php?t=162013)

zmeevolk 29.07.2011 14:34

Противоположное движение объекта, перетаскиваемому
 
Здравствуйте,
Такая вот смешная проблема - есть три шарика, один синий и два зеленых, надо сделать так, чтоб при перетаскивании синего, зеленый, с которым сталкиваеться синий, двигался в противоположном направлении.
Умом понимаю что при столкновении надо просто добавлять в каждом фрейме к координате зеленого разницу которую прошел синий после столкновения а реализовать в коде никак не могу, прямо какой-то мозговой затык, уже полдня борюсь.
Соответсвенно вопрос:
1. Как реализовать в коде движение зеленого шарика, во время столкновения с синим, в противоположную сторону?
http://farion.ua/tmp/vopros.gif

КорДум 29.07.2011 14:51

Шары занесены в массив. Вы знаете индекс перетаскиваемого шара, знаете, в какую сторону его двигаете. Вот и меняйте индексы у рядом стоящих шаров в сторону перетаскивания. И местоположение шаров тоже, конечно же.

zmeevolk 29.07.2011 15:35

Цитата:

Сообщение от КорДум (Сообщение 1015849)
Шары занесены в массив. Вы знаете индекс перетаскиваемого шара, знаете, в какую сторону его двигаете. Вот и меняйте индексы у рядом стоящих шаров в сторону перетаскивания. И местоположение шаров тоже, конечно же.

А зачем шары в массив заносить? Может туплю конечно, но я видел как-то так: при пересечении диаметров, зеленому шару приплюсовывается или отнимается расстояние которое прошел синий шар от начала столкновения. В любом случае вопрос был в том как менять местоположение зеленых шаров (синий двигается пользователем) в правильную сторону.

КорДум 29.07.2011 15:37

Ну делайте так, с радиусами-математикой, если вам так проще.

t4arty 29.07.2011 15:47

setIndex, Вам в помощь

DaFive 29.07.2011 15:53

Цитата:

Сообщение от t4arty (Сообщение 1015903)
setIndex, Вам в помощь

В чем же она заключается, эдакая магическая помощь setIndex?

zmeevolk 29.07.2011 16:32

Цитата:

Сообщение от КорДум (Сообщение 1015889)
Ну делайте так, с радиусами-математикой, если вам так проще.

Да мне может и так и так проще. Как шар зеленый переместить в направлении противоположном синему? Если можно пример кода.
Например:
при смещении синего шара на x зеленый смещается на -x

DaFive 29.07.2011 16:45

Вложений: 1
Да как угодно.
Знаем текущую координату, знаем прошлую, знаем дельту смещения. Двигаем согласно этих данных.

DaFive 29.07.2011 16:46

Там в принципе все ясно должно быть. Ваша задача - ограничить движения двигаемого шарика некой областью.

bav 29.07.2011 16:46

1) Начинаете перетаскивать какой нибудь шар.
2) Во время перетаскивания (MouseEvent.MOUSE_MOVE) проверяете смещение перетаскиваемого шара от его начальных координат.
3) Если оно положительно, двигаете правый, относительно перетаскиваемого, шар на дельту, вычисленную в пункте 2, в противоположную сторону.
4) Если смещение (из пункта 2) отрицательно, делаете описанное в пункте 3 с левым шаром.
5) При превышении смещением расстояния между шарами, останавливаете перетаскивание.
6) Выравниваете шары при необходимости.
7) При использовании массива меняете переместившимся шарам индексы.

Добавлено через 2 минуты
Цитата:

ограничить движения двигаемого шарика некой областью
Как один из вариантов: startDrag(lockCenter:Boolean = false, bounds:Rectangle = null):void


Часовой пояс GMT +4, время: 18:01.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.