Привет. Есть вопрос по движению.
У меня есть Symbol типа Movie Clip (player). Хочу чтобы он передвигался по нажатию клавиш.
Ниже код. Объект двигается, всё ОК. Но есть одна проблема: если зажать клавишу, некоторое время объект двигается нормально, а потом начинает ускоряться. Двигаться быстрее.
Собственно вопрос, кто-нибудь может объяснить, почему движение получается с ускорением, а не равномерное? Что-то не вкурю.

Код AS1/AS2:
package{
import flash.display.MovieClip;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import flash.events.Event;
public class Main extends MovieClip {
var vx, vy:int;
public function Main(){
init();
}
public function init():void{
vx = 0;
vy = 0;
//Add event listeners
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKey_Down);
stage.addEventListener(KeyboardEvent.KEY_UP, onKey_Up);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
function onKey_Down(event:KeyboardEvent):void{
if(event.keyCode == 65 || event.keyCode == Keyboard.LEFT){
vx -= 1;
}
if(event.keyCode == 68 || event.keyCode == Keyboard.RIGHT){
vx += 1;
}
if(event.keyCode == 87 || event.keyCode == Keyboard.UP){
vy -= 1;
}
if(event.keyCode == 83 || event.keyCode == Keyboard.DOWN){
vy += 1;
}
}
function onKey_Up(event:KeyboardEvent):void{
if(event.keyCode == 65 || event.keyCode == 68 || event.keyCode == Keyboard.RIGHT || event.keyCode == Keyboard.LEFT){
vx = 0;
}
if(event.keyCode == 87 || event.keyCode == 83 || event.keyCode == Keyboard.UP || event.keyCode == Keyboard.DOWN){
vy = 0;
}
}
function onEnterFrame(event:Event){
var playerHalfHeight:uint = player.height/2;
var playerHalfWidth:uint = player.width/2;
//Move player
player.x += vx;
player.y += vy;
//Stop Player movement at the end of stage
if(player.x - playerHalfWidth < 0){
player.x = 0 + playerHalfWidth;
}
else if(player.x + playerHalfWidth > stage.stageWidth){
player.x = stage.stageWidth - playerHalfWidth;
}
else if(player.y - playerHalfHeight < 0){
player.y = 0 + playerHalfHeight;
}
else if(player.y + playerHalfHeight > stage.stageHeight){
player.y = stage.stageHeight - playerHalfHeight;
}
}
}
}