![]() |
|
||||||||||
|
|||||
|
Регистрация: Jan 2010
Сообщений: 187
|
Заранее извиняюсь за глупые вопросы, но все когда-то начинали. Надеюсь на понимание.
Итак. у меня есть зелёный кубик, который по нажатию кнопки мыши я хочу заставить прыгать на различную высоту. Прыжок совершается при отпускании кнопки, а когда кнопка зажата растёт сила прыжка. Я в самом начале процесса изучения AS3. Поэтому у меня пока вот что получилось: package { import flash.display.MovieClip; import flash.events.MouseEvent; public class Main extends MovieClip { public var hero:MovieClip; public var jump:int= 0; public function Main() { stage.addEventListener(MouseEvent.MOUSE_DOWN, KeyMouseOn); stage.addEventListener(MouseEvent.MOUSE_UP, KeyMouseOff); } private function KeyMouseOn(evt:MouseEvent):void { jump +=1; trace(jump); } private function KeyMouseOff(evt:MouseEvent):void { hero.y -= jump; hero.y += jump; jump = 0; } } } Видимо, событие срабатывает только единоразово при клике. Как мне подправить, чтобы это событие увеличивало счётчик jump до тех пор, пока я держу клавишу мыши зажатой? Вопрос 2: Когда я отпускаю клавишу мыши я хотел бы, чтобы кубик подпрыгивал на высоту, которую насчитал счётчик jump, но не скачком, а плавно анимировано. И потом возвращался бы на первоначальное место. Или, если это сложно реализовать, то как сделать попроще, чтобы он на небольшой момент времени перемещался наверх на величину jump и потом возвращался обратно на место. Тоесть, я хочу, чтобы это было заметно глазом, а сейчас у меня всё это происходит моментально и я не вижу, что мой кубик вообще куда-то прыгал. И вопрос 3: В правом верхнем углу экрана у меня динамическое поле, в котором я хотел бы отображать динамически значение jump. (см. вложение) В AS2 этому полю можно присвоить Variable в специальном окне и всё работало, а здесь это строка Variable не активна. Как такое реализуется в AS3 ? |
|
|||||
|
Регистрация: Jun 2006
Сообщений: 400
|
Цитата:
|
|
|||||
|
Регистрация: Jun 2009
Сообщений: 31
|
Цитата:
Цитата:
ты же когда рисуешь анимацию на временной шкале указываешь положение объекта в кадрах? это и есть указание положения в определённый момент времени. соответственно, при отпускании кнопки рассчитываем траекторию (точки), запускаем таймер, либо по событию enterFrame изменяем положение кубика Цитата:
var myTxtField = new ТвоёИмяКласса(); // один раз myTxtField.text = jump; // на каждом этапе изменения координат всё |
|
|||||
|
Регистрация: Jun 2006
Сообщений: 400
|
Цитата:
|
|
|||||
|
Да зачем с TweenLite. Достаточно простого знания физики. А именно, что на кубик влияет две силы - импульс-скорость (так сказать дельтаПеремещения/кадр) и гравитация. То есть при полете нужно скорость постоянно уменьшать, а как она станет отрицательной - кубик потянет вниз. И все это будет симпатично и красиво. И плавно.
Добавлено через 6 минут Ну и плюс коэфициент эластичности. Хотя какая эластичность у кубика?
__________________
тут я |
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
В Instance Name вписываешь myTxtField и сразу используешь, как и в AS2.
myTxtField.text = jump; // на каждом этапе изменения координат. Я бы честно посчитал коэффициенты параболы, с физикой чуть не точно высота выйдет. Хотя метод Эйлера - это наше всё. |
|
|||||
|
Регистрация: Jun 2006
Сообщений: 400
|
Цитата:
Вы свое будете писать сколько? А с tweenLite-ом ровно столько, сколько нужно времени на написание одной строки кода. И все тоже будет красиво и плавно. |
|
|||||
|
Э, как вы сложно загнули - с интерфейсами-то. Я сделаю все в одном классе строчек на 20, если не меньше. Тем более, для новичка лучше все сделать самому, ибо это хорошая практика, чем использовать уже готовый класс - потом просто глянуть, хлопнуть себя по лбу, мол, чего я мучился. Зато что-то уже уметь и знать.
__________________
тут я |
|
|||||
|
Регистрация: Jun 2006
Сообщений: 400
|
КорДум А зачем заново изобретать велосипед? Повторное использование кода, это конечно хорошо. Но готовая библиотека всегда лучше. Потому что она дешевле.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 17:33. |
|
|
« Предыдущая тема | Следующая тема » |
|
|