flash on 2010-4-5

by hashito
MainStage
♥0 | Line 89 | Modified 2010-04-05 17:38:23 | MIT License
play

ActionScript3 source code

/**
 * Copyright hashito ( http://wonderfl.net/user/hashito )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/vH6Y
 */

// MainStage
package {
	import flash.display.Sprite;
	[SWF(frameRate=60,width=456,height=456)]
	public class MainStage extends Sprite {
		public function MainStage(){
			addChild(new Main());
		}
	}
}

import flash.display.*;
import flash.filters.BlurFilter;
import flash.geom.Point;
import flash.geom.Matrix;
import flash.geom.ColorTransform;
import flash.events.*;
import flash.utils.Timer;
import flash.text.TextField;
import flash.text.TextFormat;
import net.hires.debug.Stats;

class debug{public static var out:TextField=new TextField();}
//
/*
	t.hashito
*/
class MF{
	public static function AFFORD (x:Number,aim:Number,a:Number):Boolean{return (x<=(a+aim))&&(x>=(a-aim));}
	public static function RAN (n:Number=1):Number{return (Math.random()*n);}
	public static function ISPM (n:Number):Number{if(n<0){return -1;}else if(n>0){return 1;}return 0;}
	public static function MAX (n:Number,max:Number):Number{return (n>max)?max:n;}
	public static function MIN (n:Number,min:Number):Number{return (n<min)?min:n;}
	public static function LIMIT (n:Number,max:Number,min:Number):Number{if(n>max){return max;}else if(n<min){return min;}else{return n};}
	public static function RAD_ANG(n:Number):Number{return n*180/Math.PI}
	public static function ANG_RAD(n:Number):Number{return n*Math.PI/180 }
}

class Main extends Sprite{
	public const H:Number = 456,W:Number = 456,CN:uint=1;
	public var man:Man=new Man(W,H);
	//Constructor
	public function Main() {addEventListener(Event.ADDED_TO_STAGE, init);}
	//init
	public function init(e:*):void{
		addChild(man);
		
		// debug
		addChild(debug.out);
		debug.out.autoSize=flash.text.TextFieldAutoSize.LEFT;
		
		addEventListener(Event.ENTER_FRAME ,update);
		//stage.addEventListener(MouseEvent.MOUSE_MOVE ,mousemove);
		stage.addEventListener(flash.events.KeyboardEvent.KEY_DOWN ,keydown);
	}
	public function update(e:Event=null):void{man.update();}
	
	public function keydown(e:KeyboardEvent=null):void{
		var c_up:int=38,c_left:int=37,c_right:int=39;
		switch(e.keyCode){
			case c_up:		man.jump(); break;
			case c_left:	man.left(); break;
			case c_right:	man.right();break;
		}
	}
	//public function mousemove(e:Event=null):void{m.x=mouseX;m.y=mouseY;}
}

class V extends Sprite{
	public var vx:Number=0,vy:Number=0,ax:Number=0,ay:Number=0,h:Number,w:Number;
	public function V(w:Number,h:Number){this.h=h;this.w=w;}
	public function update():void{
		x+=vx;y+=vy;vx+=ax;vy+=ay;
		if(x<0){
			x=0;
			vx=MF.MIN(vx,0);
			ax=MF.MIN(ax,0);
		}
		if(y<0){
			y=0;
			vy=MF.MIN(vy,0);
			ay=MF.MIN(ay,0);
		}
		if(x>w){
			x=w;
			vx=MF.MAX(vx,0);
			ax=MF.MAX(ax,0);
		}
		if(y>h){
			y=h;
			vy=MF.MAX(vy,0);
			//ay=MF.MAX(ay,0);
		}
			debug.out.text="vy="+vy+" ay="+ay+" y="+y;
	}
}
class Man extends V{
	public function Man(w:Number,h:Number){
		super(w,h);
		graphics.beginFill(0);
		graphics.drawCircle(-5,-10,10);
		ay=0.09;
	}
	public function jump() :void{vy=-2;}
	public function left() :void{x-=2;}
	public function right():void{x+=2;}
}