ぱーん
♥0 |
Line 99 |
Modified 2010-11-11 20:29:46 |
MIT License
archived:2017-03-20 09:25:48
ActionScript3 source code
/**
* Copyright Kihara ( http://wonderfl.net/user/Kihara )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/lybm
*/
package
{
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.MouseEvent;
public class ex4_4_2 extends Sprite
{
private const N:uint = 200;
private var array:Array = [];
private var count:uint=0;
private var flag:Boolean = true;
private var g:Array = [];
private var vy:Array = [];
private var vx:Array = [];
private var rad:Array = [];
private var mx:Number;
private var my:Number;
public function ex4_4_2(){
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
makeObject();
stage.addEventListener(MouseEvent.MOUSE_DOWN,onMouseClickDown);
stage.addEventListener(MouseEvent.MOUSE_UP,onMouseClickUp);
addEventListener(Event.ENTER_FRAME,onEnterFrame);
}
private function makeObject():void{
for(var i:uint = 0;i<N;i++){
var sp:Sprite = new Sprite();
sp.graphics.beginFill(0xFFFFFF*Math.random());
sp.graphics.drawCircle(0,0,10);
sp.graphics.endFill();
sp.x = stage.stageWidth*Math.random();
sp.y = 0;
vy.push(10*Math.random()+1);
vx.push(0);
g.push(0.8);
array.push(sp);
addChild(sp);
}
}
private function onMouseClickDown(e:MouseEvent):void{
flag = false;
mx = mouseX;
my = mouseY;
g.splice(0);
var d:Number;
for(var k:uint=0;k<N;k++){
g.push(0);
d=Math.sqrt((mx-array[k].x)*(mx-array[k].x)+(my-array[k].y)*(my-array[k].y));
rad.push(Math.asin((my-array[k].y)/d));
if(mx-array[k].x<0)
vx[k]=10*Math.cos(rad[k]+Math.PI);
else vx[k]=10*Math.cos(rad[k]);
vy[k]=10*Math.sin(rad[k]);
}
}
private function onMouseClickUp(e:MouseEvent):void{
flag = true;
rad.splice(0);
g.splice(0);
for(var k:uint=0;k<N;k++){
if(array[k].x==mx && array[k].y==my){
vx[k]=(50*Math.random()-25);
vy[k]=(50*Math.random()-25);
}
g.push(0.8);
}
}
private function onEnterFrame(e:Event):void{
for(var j:uint=0;j<N;j++){
array[j].y+=vy[j]+g[j];
array[j].x+=vx[j];
if(array[j].y>=stage.stageHeight){
array[j].y=stage.stageHeight;
g[j]=-0.5*(g[j]+vy[j]);
vy[j]=0;
}
if(array[j].x < 0){
array[j].x=0;
vx[j]=vx[j]*-0.5;
}
if( array[j].x > stage.stageWidth){
array[j].x=stage.stageWidth;
vx[j]=vx[j]*-0.5;
}
if(mx-array[j].x > -10 && mx-array[j].x < 10 && my-array[j].y > -10 && my-array[j].y < 10 && flag==false){
array[j].x=mx;
array[j].y=my;
vx[j]=0;
vy[j]=0;
}
if(flag==true )
g[j]+=0.8;
}
}
}
}