I am down to about a hand full of hair on my head at this point.
The scenerio: I am trying to make a very simple flight simulator type of animation. When the user presses and holds an arrow key, things move/rotate.
The problem: If you alternate moving/rotating things in different directions, the location/rotation of these things becomes skewed. They seem to rotate or move more in one direction than another. For instance, if you play around with the animation for a while, the background is moved or rotated so far in one direction that you can eventually see the edge of the background movieclip. I have tried to tween these things back to the propper location but it just does not look good at all.
Can anyone please help me oput here?
import flash.display.MovieClip;
import flash.events.MouseEvent;
import com.greensock.TweenLite;
import com.greensock.easing.*;
var leftKey:Boolean = false;
var upKey:Boolean = false;
var rightKey:Boolean = false;
var downKey:Boolean = false;
var lrIncrementor:Number = .7;
var udIncrementor:Number = .7;
var rotateInc:Number = .005;
mcBeginMessage.btnContinue.addEventListener(MouseEvent.CLICK, handleBegin);
function handleBegin(evt:MouseEvent):void
{
Mouse.hide();
mcBeginMessage.x=-300;
mcBeginMessage.btnContinue.removeEventListener(MouseEvent.CLICK, handleBegin);
stage.addEventListener(KeyboardEvent.KEY_DOWN, handleKeyPress);
}
function handleKeyPress(evt:KeyboardEvent):void
{
stage.addEventListener(KeyboardEvent.KEY_UP, handleKeyRelease);
stage.addEventListener(Event.ENTER_FRAME, handleMovingStuff);
if(evt.keyCode == 37)
{
leftKey = true;
}
if(evt.keyCode == 38)
{
upKey = true;
}
if(evt.keyCode == 39)
{
rightKey = true;
}
if(evt.keyCode == 40)
{
downKey = true;
}
}
function handleKeyRelease(evt:KeyboardEvent):void
{
stage.removeEventListener(Event.ENTER_FRAME, handleMovingStuff);
lrIncrementor = .7;
udIncrementor = .7;
rotateInc = .005;
if(evt.keyCode == 37)
{
leftKey = false;
}
if(evt.keyCode == 38)
{
upKey = false;
}
if(evt.keyCode == 39)
{
rightKey = false;
}
if(evt.keyCode == 40)
{
downKey = false;
}
}
function handleMovingStuff(evt:Event):void
{
lrIncrementor += .05;
udIncrementor += .05;
rotateInc += .03;
if(leftKey == true && mcVertLine.x > 390)
{
mcVertLine.x -= lrIncrementor;
mcFront.rotation += lrIncrementor;
mcBackGrnd.rotation += rotateInc;
}
if(upKey == true && mcHorizLine.y < 549)
{
mcHorizLine.y += udIncrementor;
mcSide.rotation -= udIncrementor/2;
mcBackGrnd.y -= 5;
}
if(rightKey == true && mcVertLine.x < 503)
{
mcVertLine.x += lrIncrementor;
mcFront.rotation -= lrIncrementor;
mcBackGrnd.rotation -= rotateInc;
}
if(downKey == true && mcHorizLine.y > 436)
{
mcHorizLine.y -= udIncrementor;
mcSide.rotation += udIncrementor/2;
mcBackGrnd.y += 5;
}
if(mcVertLine.x >= 447 && mcVertLine.x <= 448)
{
TweenLite.to(mcBackGrnd, 1,{rotation:24});
}
}