forked from: むーぶ
forked from むーぶ (diff: 2)
ActionScript3 source code
/**
* Copyright damionfeller ( http://wonderfl.net/user/damionfeller )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/cRhR
*/
// forked from Kihara's むーぶ
package
{
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
[SWF(backgroundColor=0, width=500, height=500)]
public class flasn_ex3_5 extends Sprite
{
private var data:Array=[];
public function flasn_ex3_5()
{
//ウィンドウのサイズが変わってもFlashのサイズを変えない
stage.scaleMode = StageScaleMode.NO_SCALE;
//原点をちゃんと左上にする
stage.align = StageAlign.TOP_LEFT;
for(var i:int=0;i<100;i++){
var graph:Graph=new Graph(Math.random()*10+5,0,0,Math.random()*40+10,Math.random()*0xFFFFFF);
graph.x=Math.random()*500;
graph.y=Math.random()*0;
graph.vx=Math.random()*10-5;
graph.vy=Math.random()*10-5;
graph.vr=Math.random()*10-5;
data.push(graph);
addChild(data[i]);
}
trace(stage.width,stage.height);
trace(stage.stageWidth,stage.stageHeight);
addEventListener(Event.ENTER_FRAME,onEnterFrame);
}
public function onEnterFrame(e:Event):void{
for(var i:int=0;i<data.length;i++){
data[i].move();
if(data[i].x< -data[i].r2){
data[i].x=stage.stageWidth+data[i].r2;
}
else if(data[i].x>stage.stageWidth+data[i].r2){
data[i].x= -data[i].r2;
}
if(data[i].y< -data[i].r2){
data[i].y=stage.stageHeight+data[i].r2;
}
else if(data[i].y>stage.stageHeight+data[i].r2){
data[i].y= -data[i].r2;
}
}
}
}
}
import flash.display.Sprite;
class Graph extends Sprite{
public var vx:int;
public var vy:int;
public var vr:int;
public var r2:int;
private var c2:Number;
private var radius:Number;
private function bou(num:int):void{
var odd:Array=[];
var even:Array=[];
for(var i:int=0;i<num;i++){
if(i%2==0)
even.push(i*(2*Math.PI/num)+radius);
else if(i%2==1)
odd.push(i*(2*Math.PI/num)+radius);
}
graphics.lineStyle(2,c2);
if(num%2==0){
graphics.moveTo(r2*Math.cos(even[0]),r2*Math.sin(even[0]));
for(var k:int=even.length-1;k>=0;k--){
graphics.lineTo(r2*Math.cos(even[k]),r2*Math.sin(even[k]));
}
graphics.moveTo(r2*Math.cos(odd[0]),r2*Math.sin(odd[0]));
for(k=odd.length-1;k>=0;k--){
graphics.lineTo(r2*Math.cos(odd[k]),r2*Math.sin(odd[k]));
}
}
else if(num%2==1){
var arrays:Array=even.concat(odd);
graphics.moveTo(r2*Math.cos(arrays[0]),r2*Math.sin(arrays[0]));
for(var n:int=arrays.length-1;n>=0;n--)
graphics.lineTo(r2*Math.cos(arrays[n]),r2*Math.sin(arrays[n]));
}
}
public function Graph(num:int,_x:int,_y:int,r:int,color:Number){
vx=_x;
vy=_y;
r2=r;
c2=color;
radius=Math.random()*180/Math.PI;
bou(num);
}
public function move():void{
this.x+=vx;
this.y+=vy;
this.rotation+=vr;
}
}