Программное движение
Здравствуйте!
Решил написать простенькую игру. Код ниже отвечает за движение объекта mc вправо. При зажиме клавиши Вправо объект mc передвигается вправо на 10 пикселей, далее следует небольшая задержка, потом объект начинает двигаться нормально. Можно ли как-то ускорить процесс? Код AS3:
|
В обработчике события нажатия на клавишу меняйте значения moveX и moveY на -1 и 1 (в зависимости от направления движения). В обработчике события отжатия клавиш - обнуляйте значения. В обработчике ENTER_FRAME проверяйте эти значения и, например, координату x меняйте таким образом: mc.x = moveX * moveSpeed.
|
Честно говоря, я ничего не понял из того что Вы сказали, но благодаря Вам удалось осуществить что-то похожее)
Код AS1/AS2:
|
Можно - надо передвигать по таймеру! - при зажиме клавиши запустить таймер, и каждую единицу времени увеличивать или уменьшать значение икс.
То, что происходит задержка - это не flash виноват - это клавиатура так настроена - так и должно быть. сначала набирается символ, затем после задержки дублируется, если клавиша не отпущена. |
я по-другому делал. вешаем два обработчика события KeyboardEvent.KEY_DOWN и KeyboardEvent.KEY_UP на соотв. функции, и по коду нажатой (или отжатой) клавиши меняем соответствующее значение массива или объекта, в зависимости от реализации. а третья функция запускается когда надо выяснить состояние кнопок игрока - по ENTER_FRAME например. и возвращает состояния кнопок (тот самый массив)
|
да -повесить слушатель на событие
Код AS3:
|
Часовой пояс GMT +4, время: 13:23. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.