![]() |
Движение за мышью с ускорением, и полным торможением к прибытию к мыши, как?
Знаю как определить угол поворота в сторону мышки, а следовательно и то, как двигать объект в сторону мышки.
Ускорение естественно тоже понятно. Непонятно одно, как сделать так, чтобы объект в определенном месте (по расчетам) начинал тормозить так, чтобы он затормозил полностью в момент когда он столкнется с координатами мышки? Сейчас же додумался до того, что можно начинать торможение тогда, когда мышка перестает двигаться, в принципе мне и это бы подошло, но все таки остается интересным как сделать описанное мною выше. |
Как вариант, по теореме Пифагора определять расстояние между объектом и курсором и домножать на него скорость объекта. Соответственно, чем ближе - тем медленнее, а в точке нахождения курсора расстояние будет нулевым, соответственно, объект остановится.
|
Т.е., скажем:
Код AS3:
Т.е. Код AS3:
|
а че бы не по-простому
Код AS3:
|
Напиши пожалуйста решение для AS 3.0.
Твой вариант на AS 2.0. |
Цитата:
|
Ну точно могу сказать что это не AS 3. Т.к. в AS 3 все методы расфасованы по пакетам, которые нужно подключать.
А также, некоторые методы используемые silin в AS 3 вообще удалены. |
Уважаемый, Neirol, вы не правы...
|
Ну тогда получается что это не я не прав, а Flash CS4 не прав :)
Я записал написанное silin в отдельный файл и назвал его так же, как и он назвал свой класс. Далее самостоятельно подключил пакеты и в ответ получил ошибку: Migration issue: The method drawCircle is no longer supported. В замен которого, как я только что заметил должна идти функция drawOval (подсказывает флеш), хотя такую функцию он тоже не воспринимает.... И вдобавок такая ошибка насчет хэндлера EnterFrame.... 1046: Type was not found or was not a compile-time constant: Event. Добавлено через 34 секунды Т.е. в итоге с моими исправлениями и подсказками флеша: Код AS3:
|
о сколько на открытий чудных..:)
Neirol, сори за непонятки, просто объявление пакета и добавление необходимых импортов дело хоть и обыденно-обязательное, но к логике кода никакого отношения не имеет, поэтому и привел без них, здесь это в общем-то обычное явление, не удивляйся Добавлено через 4 минуты насчет 'The method drawCircle is no longer supported' компилятор тебя обманывает: еще поддерживается |
Да дело не в этом, просто без этого, это уже вроде как AS 2, да и про функцию drawCircle флеш ругается, что миграция мол, уже была, иди в *опу со старьем. Что вместо нее использовать то в AS 3?
|
я бы не стал работать с компилятором, у которого миграция так далеко зашла
нарисуй квадрат, пусть он бегает..:) |
В FLA:
Код AS3:
Код AS3:
|
Код AS3:
|
Я знаю что нет =)
Мне флеш говорит что нужно использовать drawOval вместо drawCircle В общем поставил обратно drawCircle Поставил flash.events.Event И все заработало как надо! Огромное спасибо!!! Добавлено через 1 час 5 минут http://vkontakte.ru/app624814_17210304 А как сделать такое же плавное движение как здесь? |
Код AS3:
|
Вложений: 1
Классно, стало совсем как там.
Но я имел ввиду саму гладкость передвижения, без морганий =) Оказывается надо было просто FPS добавить и стало все совсем супер ;) Результат во вложении. Всем огромное спасибо :drinks: |
silin, а можно ли как нибудь просчитать такой-же простой формулой, движение в N шагов?
Примерно:: Код AS1/AS2:
|
старина, движение в N шагов легко вычистятся делением дистанции на эти н-шагов, не ?
|
да, но я имею в виду движение которое сначала ускоренное, а под конец тормозящее.
|
Изобретатели велосипедов :)
Цитата:
Код AS3:
|
Bgg, спасибо, но мне нужен код, который я бы смог контролировать в любой момент. Твины контролировать нельзя.
|
sltt, можно. Смотря что вам нужно. Можно остановить, возобновить, промотать в обратную сторону твин; повесить события о начале, окончании, процессе анимации. Само собой все свойства объекта так же в ваших руках.
|
В общем я имею ввиду, что мне не так нужно двигать объект, как нужно знать координаты для дальнейшего расчета.
Движение должно быть ускоряющимся, а потом тормозящим. Как здесь: Цитата:
Хотя мне не понятно что такое Код AS1/AS2:
И подобрать их скорее всего можно по простой формуле типа Код AS1/AS2:
|
sltt, вообще то здесь движение всегда будет тормозящим. Эффект ускорения возникает оттого, что ты мышку таскаешь плавно ;)
А насчет рассчета движения - это геометрическая прогрессия, как я понимаю. |
Цитата:
|
ну обычно, куда напишешь - туда и улетает..:)
мы должны угадать где вы и что-то пишите ? sX - величина, пропорциональная расстоянию до мыши, ее корректируем в MOUSE_MOVE, чтобы все это работало для heromc, видимо и определять ее нужно примерно как sX = 0.1 * heromc.mouseX; |
Достаточно по x и y добавлять 1/10 от разницы между конечной (координаты мыши) и текущей точкой.
|
а как сделать движение к определенной точке сначала с ускорением (скорость увеличивается с нуля), а когда до цели осталось определенное расстояние (например, половина) - с замедлением до нуля, в обработчике ENTER_FRAME?
|
Цитата:
|
| Часовой пояс GMT +4, время: 06:29. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.