Вообщем как обычно, после долгих часов раздумий, обращаюсь за помощью.
Весь код перерыл, но так и не дошло до меня в чем же проблема.
Короче, персонаж двигается согласно заданным параметрам,но после возвращается в прежнее положение.

Код AS3:
package
{
import flash.display.*;
import flash.events.*;
import flash.ui.*;
import flash.utils.*;
public class ScotlandCheer extends MovieClip
{
public var ground:Ground;
public var army:Array;
public var alien:Alien;
public var gameTimer:Timer;
public var archibald:Archibald;
public var grounded:Boolean;
public var downKeyIsBeingPressed:Boolean;
public var upKeyIsBeingPressed:Boolean;
public var leftKeyIsBeingPressed:Boolean;
public var rightKeyIsBeingPressed:Boolean;
public function ScotlandCheer()
{
leftKeyIsBeingPressed = false;
rightKeyIsBeingPressed = false;
downKeyIsBeingPressed = false;
upKeyIsBeingPressed = false;
ground = new Ground();
addChild(ground);
army = new Array();
var newAlien = new Alien (200,50);
army.push (newAlien);
addChild(newAlien);
archibald = new Archibald();
addChild(archibald);
archibald.x = mouseX;
archibald.y = mouseY;
gameTimer = new Timer(25);
gameTimer.addEventListener (TimerEvent.TIMER,onTick);
gameTimer.start();
grounded = true;
addEventListener( Event.ADDED_TO_STAGE, onAddToStage );
return;
}
public function onTick(timerEvent:TimerEvent):void
{
if (Math.random() <0.01)
{
var randomX:Number = Math.random()* 550;
var newAlien = new Alien (randomX,50);
army.push (newAlien);
addChild(newAlien);
}
archibald.x = 400;
archibald.y = 500;
for each( var alien:Alien in army)
if (grounded) alien.MoveABit();
if(alien.hitTestObject(ground))
{
alien.MoveABit();
grounded = false;
}
if (leftKeyIsBeingPressed)
{
archibald.moveABit(-3,0);
}
// ГраницаЭкрана
if (archibald.x <(archibald.width / 2))
{
archibald.x = archibald.width / 2;
}
else if (archibald.x > 800 - (archibald.width / 2))
{
archibald.x = 800 - (archibald.width / 2)
}
}//Конец функции
public function onKeyPress(event:KeyboardEvent):void
{
if (event.keyCode == Keyboard.LEFT)
{
leftKeyIsBeingPressed = true;
}
else if (event.keyCode == Keyboard.RIGHT)
{
rightKeyIsBeingPressed = true;
}
else if (event.keyCode == Keyboard.DOWN)
{
downKeyIsBeingPressed = true;
}
else if (event.keyCode == Keyboard.UP)
{
upKeyIsBeingPressed = true;
}
return;
}
public function onAddToStage( event:Event ):void
{
stage.addEventListener( KeyboardEvent.KEY_DOWN, onKeyPress );
stage.addEventListener( KeyboardEvent.KEY_UP, onKeyRelease );
return;
}
public function onKeyRelease(event:KeyboardEvent):void
{
if (event.keyCode == Keyboard.LEFT)
{
leftKeyIsBeingPressed = false;
}
else if (event.keyCode == Keyboard.RIGHT)
{
rightKeyIsBeingPressed = false;
}
else if (event.keyCode == Keyboard.DOWN)
{
downKeyIsBeingPressed = false;
}
else if (event.keyCode == Keyboard.UP)
{
upKeyIsBeingPressed = false;
}
return;
}
}
}
Вообщем-то вот. Ума не приложу, в чем же тут проблема?