「PhysicalPointクラス(2)」で紹介したコードを、もう少し汎用的にしてみた。
変数「ball_num」の値を変更するだけで、ボールの数がいくらでも増える。
以下、コード。
import flash.filters.GlowFilter;
var param:GlowFilter=new GlowFilter();
param.color=0x00FFFF;
param.alpha=0.9;
param.blurX=35;
param.blurY=35;
param.strength=5;
param.quality=3;
param.inner=false;
param.knockout=false;
var ball_num=10;//ballの数
var pt:Array=new Array();
for(var i:Number=0;i<ball_num;i++){
pt[i]=new PhysicalPoint(Math.random()*Stage.width,Math.random()*Stage.height,0.9);
}
function loop():Void{
for(var i:Number=0;i<ball_num;i++){
if(i==0){
pt[i].setKasokudo((_root._xmouse-pt[i].x)*10,(_root._ymouse-pt[i].y)*10);
}else{
pt[i].setKasokudo((pt[i-1].x-pt[i].x)*10,(pt[i-1].y-pt[i].y)*10);
}
var syoki:Object={_x:pt[i].x,_y:pt[i].y};
var ball:MovieClip=_root.attachMovie("ball","ball"+i,i,syoki);
ball.filters=[param];
}
}
setInterval(loop,33);
またしても、線でつなげてみた。
以下、コード。
import flash.filters.GlowFilter;
var param:GlowFilter = new GlowFilter();
param.color = 0x00FFFF;
param.alpha = 0.9;
param.blurX = 35;
param.blurY = 35;
param.strength = 5;
param.quality = 3;
param.inner = false;
param.knockout = false;
var ball_num = 10;//ballの数
var pt:Array = new Array();
for (var i:Number = 0; i<ball_num; i++) {
pt[i] = new PhysicalPoint(Math.random()*Stage.width/2, Math.random()*Stage.height/2, 0.9);
}
function loop():Void {
clear();
for (var i:Number = 0; i<ball_num; i++) {
if (i == 0) {
pt[i].setKasokudo((_root._xmouse-pt[i].x)*10,(_root._ymouse-pt[i].y)*10);
} else {
pt[i].setKasokudo((pt[i-1].x-pt[i].x)*10,(pt[i-1].y+10-pt[i].y)*10);
}
if(i%2==0){
var syoki:Object = {_x:pt[i].x, _y:pt[i].y};
var ball:MovieClip = _root.attachMovie("ball", "ball"+i, i, syoki);
ball.filters = [param];
}
}
_root.lineStyle(1,0xFFFFFF);
_root.moveTo(pt[0].x,pt[0].y);
for (var i:Number = 1; i<ball_num; i++) {
if(i%2==0){
_root.curveTo(pt[i-1].x,pt[i-1].y,pt[i].x,pt[i].y);
}
}
}
setInterval(loop,33);

コメントする