Форум 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=128323)

mamtn 05.08.2009 09:39

событие смены кадров
 
Наверное для многих это просто, а мне вот не понятно.
В игре нужно управлять клипом с помощью клавиш.
В 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 подключить, но как?

VVall 05.08.2009 09:50

Событие нажатие клавиши генерируется не один раз, а с учётом автоповтора - сначала в момент нажатия, потом через паузу повторяется с определённой частотой.

Вам надо stage.addEventListener(Event.ENTER_FRAME,вызываемая функция);

mamtn 07.08.2009 18:16

продолжаю спрашивать
 
Спасибо за ответ.
Но вот в чем сложность – я совершенно не представляю, как это все собрать в кучку.
Если я правильно понимаю, событию смены кадров надо назначить функцию,
а внутри этой функции надо организовать прослушивание нажатия клавиш, и при наступлении события нажатия клавиш вызывать другую функцию, которая и будет двигать клип.
Попробовала так, клип скачет, как ненормальный…

Код:


  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, время: 04:48.

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