|
|
|
|||||
Регистрация: Jul 2009
Адрес: C-Петербург
Сообщений: 37
|
событие смены кадров
Наверное для многих это просто, а мне вот не понятно.
В игре нужно управлять клипом с помощью клавиш. В AS2 это было сделано так: var scor:Number=3; _root.onEnterFrame=function(){// Внутри этой функции основной код игры //------- Управление клипом Kl с помощью клавиатуры---------------------- if (Key.isDown(Key.RIGHT)) { Kl._x += scor; } if (Key.isDown(Key.UP)) { Kl._y -= scor; } if (Key.isDown(Key.DOWN)) { Kl._y +=scor ; } if (Key.isDown(Key.LEFT)) { Kl._x -=scor; } } А в AS3 я это пытаюсь сделать так: var scor:Number=3; import flash.display.MovieClip; import flash.events.*; stage.addEventListener(KeyboardEvent.KEY_DOWN,dvMovie); function dvMovie(event:KeyboardEvent):void { if (event.keyCode == Keyboard.RIGHT) { Kl.x+=scor; } if (event.keyCode == Keyboard.LEFT) { Kl.x-=scor; } if (event.keyCode == Keyboard.UP) { Kl.y-=scor; } if (event.keyCode == Keyboard.DOWN) { Kl.y+=scor; } } В общем-то оно и работает. Но тормозит- нажмешь клавишу а клип еще думает, двигаться или нет Потом двигается – при нажатой клавише. Я так понимаю, что надо еще как-то enterFrame подключить, но как? |
|
|||||
Регистрация: Feb 2009
Сообщений: 1,195
|
Событие нажатие клавиши генерируется не один раз, а с учётом автоповтора - сначала в момент нажатия, потом через паузу повторяется с определённой частотой.
Вам надо stage.addEventListener(Event.ENTER_FRAME,вызываемая функция); |
|
|||||
Регистрация: Jul 2009
Адрес: C-Петербург
Сообщений: 37
|
продолжаю спрашивать
Спасибо за ответ.
Но вот в чем сложность – я совершенно не представляю, как это все собрать в кучку. Если я правильно понимаю, событию смены кадров надо назначить функцию, а внутри этой функции надо организовать прослушивание нажатия клавиш, и при наступлении события нажатия клавиш вызывать другую функцию, которая и будет двигать клип. Попробовала так, клип скачет, как ненормальный… var scor:Number=3; import flash.display.MovieClip; import flash.events.*; stage.addEventListener(Event.ENTER_FRAME,nagKlavish); function nagKlavish(event:Event):void {// Не уверена, что правильно написать: event:Event stage.addEventListener(KeyboardEvent.KEY_DOWN,dvMovie); function dvMovie(event:KeyboardEvent):void { if (event.keyCode == Keyboard.RIGHT) { Kl.x+=scor; } if (event.keyCode == Keyboard.LEFT) { Kl.x-=scor; } if (event.keyCode == Keyboard.UP) { Kl.y-=scor; } if (event.keyCode == Keyboard.DOWN) { Kl.y+=scor; } } } |
Часовой пояс GMT +4, время: 12:49. |
|
« Предыдущая тема | Следующая тема » |
|
|