
Код AS3:
// Неизменная величина ускорения.
var _accValue:Number = shvidkist;
// Сопротивление окружающей среды, чтобы персонаж остановился.
var _envResistance:Number = 0.9;
// Тут будем хранить вектор скорости.
var _velocity:Point = new Point();
// Направление, задаваемое игроком.
var _direction:Point = new Point();
// А тут у нас вспомогательные переменные, для работы с клавой.
var _keyL:Boolean = false;
var _keyR:Boolean = false;
var _keyU:Boolean = false;
var _keyD:Boolean = false;
var _keyLL:Boolean = false;
var _keyRR:Boolean = false;
var _keyUU:Boolean = false;
var _keyDD:Boolean = false;
// Слушаем необходимые события.
stage.addEventListener(Event.ENTER_FRAME, onEnterFrameУ);
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownУ);
stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUpУ);
/** Весь движняк, как обычно. */
function onEnterFrameУ(event:Event):void
{
// Вычисляем теперь уже ускорение на основании
// вектора направления.
var acceleration:Point = _direction.clone();
acceleration.normalize(_accValue);
// Ускоряемся.
_velocity = _velocity.add(acceleration);
// Испытываем сопротивление среды
_velocity.x *= _envResistance;
_velocity.y *= _envResistance;
// И наконец движемся
карта.чоловічок.x += _velocityР.x;
карта.чоловічок.y += _velocityР.y;
карта.fire.x += _velocityР.x;
карта.fire.y += _velocityР.y;
карта.x -= _velocityР.x;
карта.y -= _velocityР.y;
}
/** Коли нажали кнопку на клавіатурі. */
function onKeyDownУ(event:KeyboardEvent):void{
switch (event.keyCode)
{
case Keyboard.LEFT:
case Keyboard.A:
_keyL = true;
_direction.x = -1;
if (!карта.чоловічок.грав.play()) карта.чоловічок.грав.play();
break;
case Keyboard.RIGHT:
case Keyboard.D:
_keyR = true;
_direction.x = 1;
if (!карта.чоловічок.грав.play()) карта.чоловічок.грав.play();
break;
case Keyboard.UP:
case Keyboard.W:
_keyU = true;
_direction.y = -1;
if (!карта.чоловічок.грав.play()) карта.чоловічок.грав.play();
break;
case Keyboard.DOWN:
case Keyboard.S:
_keyD = true;
_direction.y = 1;
if (!карта.чоловічок.грав.play()) карта.чоловічок.грав.play();
break;
}
}
/** Когда кнопочку отпустили, соответственно. */
function onKeyUpУ(event:KeyboardEvent):void
{
switch (event.keyCode)
{
case Keyboard.LEFT:
case Keyboard.A:
_keyL = false;
_direction.x = _keyR ? 1 : 0;
карта.чоловічок.грав.stop();
_keyLL = true;
break;
case Keyboard.RIGHT:
case Keyboard.D:
_keyR = false;
_direction.x = _keyL ? -1 : 0;
карта.чоловічок.грав.stop();
_keyRR = true;
break;
case Keyboard.UP:
case Keyboard.W:
_keyU = false;
_direction.y = _keyD ? 1 : 0;
карта.чоловічок.грав.stop();
_keyUU = true;
break;
case Keyboard.DOWN:
case Keyboard.S:
_keyD = false;
_direction.y = _keyU ? -1 : 0;
карта.чоловічок.грав.stop();
_keyDD = true;
break;
}
}