flash on 2010-4-11

by hashito
MainStage
♥0 | Line 74 | Modified 2010-04-11 03:35:01 | 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/AncH
 */

// 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,COL:int=10,ROW:int=10;
	public const MAX:int=20;
	public var maps:Vector.<BitC>=new Vector.<BitC>(MAX,true),mx:Matrix=new Matrix(),mouse:Shape=new Shape(),mousecnv:Sprite=new Sprite();
	//Constructor
	public function Main() {addEventListener(Event.ADDED_TO_STAGE, init);}
	//init
	public function init(e:*):void{
		var b:BitmapData=new BitmapData(H,W,true,0xffffff);
		var f:BlurFilter=new BlurFilter();
		
		for(var i:int=0;i<maps.length;i++){
			maps[i]=new BitC(new Bitmap(b.clone()));
			maps[i].bitmap.filters=[f];
			addChild(maps[i]);
		}
		// debug
		// addChild(debug.out);
		// debug.out.autoSize=flash.text.TextFieldAutoSize.LEFT;
		// debug.out.text="tx="+TX+" ty="+TY;
		
		mousecnv.addChild(mouse);
		addChild(mousecnv);
		
		addEventListener(Event.ENTER_FRAME ,update);
		stage.addEventListener(MouseEvent.MOUSE_DOWN ,mousedown);
	}
	public const SX:Number=0.99,SY:Number=0.99,R:Number=0.017*360/MAX,TX:Number=(W-SX*W)/2,TY:Number=(H-SX*H)/2;
	public function mousedown(e:MouseEvent=null):void{
		var b:BitmapData=new BitmapData(H,W,true,0xffffff);
		for(var i:int=0;i<maps.length;i++){
			maps[i].bitmap.bitmapData=b.clone();
		}
	}
	public function update(e:Event=null):void{
		mouse.x=mouseX;
		mouse.y=mouseY;
		mouse.graphics.beginFill(MF.RAN(0xffffff));
		mouse.graphics.drawCircle(0,0,10);
		
		maps[0].bitmap.bitmapData.draw(mousecnv);
		mx.createBox(SX,SY,0,TX,TY);
		for(var i:int=1;i<maps.length;i++){
			maps[i].bitmap.bitmapData.draw(maps[i-1],mx);
		}
	}
}
class BitC extends Sprite{
	public var bitmap:Bitmap;
	public function BitC(bitmap:Bitmap){
		this.bitmap=bitmap;
		addChild(bitmap);
	}
}