As I've made up my mind to learn Flash, and don't want to pay a honkin' amount of cash, I decided to go with a free Flash IDE called FlashDevelop.

Since I'm toying around with the idea of sidescrollers, I did a search for "Flash sidescroller tutorial" and found this excellent 3-parter by devnote.org.  Unfortunately (for me), the tutorial expects that you're using Adobe's Flash IDE.  Thus, as a contribution to the web (and myself... mostly myself), I translated the tutorial to work with FlashDevelop.  Read on to see how I did it, or just grab the source here.

There are basically only 3 elements in the DevNote tutorial that require the Flash IDE.  They are the Boundaries, Player and StartMarker MovieClips.

As the StartMarker was just a point, I used the Point class to represent it (and called it _startPos instead). Since Boundaries and Player were basically sprites, I represented them using the Sprite class. Here is the pertinent code:

public class Main extends MovieClip 
{
    private var _startPos:Point;
    private var _player:Sprite;
    private var _boundaries:Sprite;    
    ...
    public function Main():void {
        // Assign defaults.
        _startPos = new Point(100, 10);
 
        _player = new Sprite();
        _player.graphics.beginFill(0xff0000);
        _player.graphics.drawRect(-10, -50, 20, 50);
        _player.graphics.endFill();
        _player.x = _startPos.x;
        _player.y = _startPos.y;
        addChild(_player);
 
        _boundaries = new Sprite();
        _boundaries.graphics.beginFill(0x0000ff);
        _boundaries.graphics.drawRect(40, 100, 110, 20);
        _boundaries.graphics.drawRect(100, 150, 110, 20);
        _boundaries.graphics.lineStyle(20, 0x0000ff);
        _boundaries.graphics.moveTo(200, 300);
        _boundaries.graphics.lineTo(500, 100);
        _boundaries.graphics.moveTo(500, 100);
        _boundaries.graphics.lineTo(600, 100);
        _boundaries.graphics.moveTo(800, 200);
        _boundaries.graphics.lineTo(500, 200);
        _boundaries.graphics.endFill();
        addChild(_boundaries);
        ...
    }    
    ...
}

I also change the code slightly in the case of the key handlers (I used constants for the key codes isntead of magic numbers) and used a do ... while loop for the collision detection.