forked from: タマ
forked from タマ (diff: 3)
MainStage
ActionScript3 source code
/**
* Copyright fukt ( http://wonderfl.net/user/fukt )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/1ecd
*/
// forked from hashito's タマ
// 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 cage:Vector.<Buzz>=new Vector.<Buzz>,m:Sprite=new Sprite();
//Constructor
public function Main() {addEventListener(Event.ADDED_TO_STAGE, init);}
//init
public function init(e:*):void{
m.graphics.beginFill(0);m.graphics.drawCircle(0,0,10);
addChild(m);
var buzz:Buzz;
for(var i:int=0;i<1000;i++){
buzz=new Buzz(H,W,MF.RAN(0x000000));
buzz.x=MF.RAN(W);buzz.y=MF.RAN(H);
cage.push(buzz);
addChild(buzz);
}
// debug
addChild(debug.out);
debug.out.autoSize=flash.text.TextFieldAutoSize.LEFT;
addEventListener(Event.ENTER_FRAME ,update);
stage.addEventListener(MouseEvent.MOUSE_MOVE ,mousemove);
}
public function update(e:Event=null):void{
function search(i:Buzz,inx:int,v:Vector.<Buzz>):void{
//if(m.hitTestPoint(i.x,i.y)){i.ax=MF.ISPM(m.x-i.x);i.ax+=MF.ISPM(m.y-i.y);}
if(m.hitTestPoint(i.x,i.y)){i.ax=(i.x-m.x)*0.005;i.ay+=(i.y-m.y)*0.005;}
i.update();
}
cage.forEach(search);
}
public function mousemove(e:Event=null):void{m.x=mouseX;m.y=mouseY;}
}
class Buzz extends Sprite{
public var vx:Number=0,vy:Number=0, ax:Number=0,ay:Number=0,h:int,w:int;
public function Buzz(h:int=100,w:int=100,color:uint=0x0000ff){
graphics.beginFill(color);graphics.drawCircle(0,0,3);this.h=h;this.w=w;
}
public function update():void{
x+=vx;y+=vy;vx+=ax;vy+=ay;
if(x<0)x=w;if(y<0)y=h;if(x>w)x=0;if(y>h)y=0;
vx*=0.95;ax*=0.93;vy*=0.95;ay*=0.93;
}
}