Code in frame 1 layer 1

//carVector
//use vector projection to go any speed, any direction

init();
function init(){
  car.speed = 0;
  //direction is now in degrees
  car.dir = 33;
}

car.onEnterFrame = function(){
  checkKeys();
  turn(car);
  move(car);
} // end enterFrame

function turn(sprite){
  //use vector projection to get DX and DY

  //offset the angle
  degrees = sprite.dir -90;

  //convert to radians
  radians = degrees / 180 * Math.PI;

  //get DX and DY (normalized: length is one)
  sprite.dx = Math.cos(radians);
  sprite.dy = Math.sin(radians);

  //compensate for speed
  sprite.dx *= sprite.speed;
  sprite.dy *= sprite.speed;
} // end turn;

function move(sprite){
  //moves any sprite, wrapping around boundaries

  //move
  sprite._x += sprite.dx;
  sprite._y += sprite.dy;

  //rotate changed slightly.
  sprite._rotation = sprite.dir;
  
  //check boundaries - wrap all directions
  if (sprite._x > Stage.width){
    sprite._x = 0;
  } // end if

  if (sprite._x < 0){
    sprite._x = Stage.width;
  } // end if

  if (sprite._y > Stage.height){
    sprite._y = 0;
  } // end if

  if (sprite._y < 0){
    sprite._y = Stage.height;
  } // end if
} // end move
 
function checkKeys(){
  //check keyboard to move car
  if (Key.isDown(Key.UP)){
    car.speed++;
    if (car.speed > 8){
      car.speed = 8;
    } // end if
  } // end if

  if (Key.isDown(Key.DOWN)){
    car.speed--;
    if (car.speed < -3){
      car.speed = -3;
    } // end if
  } // end if

  if (Key.isDown(Key.RIGHT)){
    car.dir += 5;
    if (car.dir > 360){
      car.dir = 0;
    } // end if
  } // end if

  if (Key.isDown(Key.LEFT)){
    car.dir -= 5;
    if (car.dir < 0){
      car.dir = 360;
    } // end if
  } // end if

} // end checkKeys