[Help] with my Platform (run&jump) engine

ok this my first post here so it may be abit much to ask. I ran thru a few searches before I posted this, so yeah I get the drift… you guys are sick of people trying to the perfect platform engine handed to them. well… I just need some help tweaking something I’ve piece-mealed together… so hopefully that’s ok and no one will flame me too much. I’v erun thru heaps of tutorials, but everyone has a different system for these thinsg and I really get lost trying to piece meal the features I want, but this is what i have so far. ok here’s my problems:

1.looks like he runs really fast but doesn’t really move fast.
2. he doesn’t hold the jump animation while he’s jumping (or the jump pose), you may need to see the fla for this, which I can upload very easy.
3. the gravity is a bit dodge. I mean it works, but it needs to be quicker and snappier if you know what I mean.
4. my boundaries totally don’t work
5. would like to figure out some kind of scrolling action
6. would like a bit more physics, like speed momentum and inertia.

here’s the code!

onClipEvent(load) {

moveX = 0;
moveY = 3; //used to fall down
jump = 0; //used to jump up
}

onClipEvent(enterFrame){
if (Key.isDown(Key.LEFT)){
moveX = -10;
_xscale = -100; //this flips the movieclip to the left
this.gotoAndStop(“run”)
}else if (Key.isDown(Key.RIGHT)){
moveX = 10;
_xscale = 100; //this flips the movieclip back to the right
this.gotoAndStop(“run”)
}else {
this.gotoAndStop(“idle”)
}
//jump!!!
if (Key.isDown(Key.UP) && hitTest(_root.platform) && moveY == 0){
jump = -16;
this.gotoAndStop(“jump”);
}

if(!Key.isDown(Key.LEFT) && !Key.isDown(Key.RIGHT)) {
this.gotoAndStop("idle");;
moveX = 0;
}

}

//this keeps looping (what happens every frame)
onClipEvent(enterFrame){

//if the hero is touching the platform
if ( hitTest(_root.platform) && jump == 0 && moveY > 0) {
	moveY = 0;
	//allign the hero to the top of the platform
	while (hitTest(_root.platform) ) {
		_y--;		
	}
	_y++;
} else if( jump < 0) {  //if he's jumping
	moveY = jump;
	jump++;
} else if( hitTest(_root.platform) == false && jump == 0 && moveY < 16 ) {
	moveY++;
}
//final movement
this._x += moveX;
this._y += moveY;

}

TIA!