パフュームのライブ動画を見ていると、いろんな場面でかっこいいエフェクトに出会う。
今回は、その中の一つ「放電エフェクト」をつくってみた。
以下、コード。
スクリプトをタイムライン弟1フレームに書くだけでよい。
//GlowFilterインポート
import flash.filters.GlowFilter;
//放電分岐数
var discharge_num:Number=20;
//放電幅
var discharge_width:Number=30;
//配列
var xx:Array=new Array();
var yy:Array=new Array();
//GlowFilter設定
var param:GlowFilter=new GlowFilter();
param.color=0x00FFFF;
param.alpha=10;
param.blurX=35;
param.blurY=35;
param.strength=5;
param.quality=3;
param.inner=false;
param.knockout=false;
//空のMC生成
var view_mc:MovieClip=this.createEmptyMovieClip("view_mc",this.getNextHighestDepth());
//実行関数
function loop():Void{
for(var i:Number=0;i<discharge_num;i++){
xx[i]=Math.random()*discharge_width+Stage.width/2-discharge_width/2;
yy[i]=i*Stage.height/discharge_num+Stage.height/discharge_num;
}
view_mc.clear();
view_mc.moveTo(Stage.width/2,0);
view_mc.lineStyle(3,0xFFFFFF);
for(var i:Number=0;i<discharge_num;i++){
view_mc.lineTo(xx[i],yy[i]);
}
view_mc.filters=[param];
}
setInterval(loop,33);
少し汎用性をもたせてみた。
変数「discharge」などの値を変えることで、放電の数を増やせるなど自由度を高めた。
以下、コード。
//GlowFilterインポート
import flash.filters.GlowFilter;
//放電数
var discharge:Number=3;
//放電分岐数
var discharge_num:Number=20;
//放電帯域
var discharge_range:Number=30;
//放電幅
var discharge_width:Number=2;
//配列宣言
var xx:Array=new Array();
var yy:Array=new Array();
//GlowFilter設定
var param:GlowFilter=new GlowFilter();
param.color=0xFFFF00;
param.alpha=10;
param.blurX=10;
param.blurY=10;
param.strength=2;
param.quality=3;
param.inner=false;
param.knockout=false;
//空のMC生成
var view_mc:MovieClip=this.createEmptyMovieClip("view_mc",this.getNextHighestDepth());
//実行関数
function loop():Void{
for(var i:Number=0;i<discharge;i++){
//二次元配列宣言
xx[i]=new Array();
for(var j:Number=0;j<discharge_num;j++){
xx[i][j]=Math.random()*discharge_range+Stage.width/2-discharge_range/2;
yy[j]=j*Stage.height/discharge_num+Stage.height/discharge_num;
}
}
view_mc.clear();
view_mc.moveTo(Stage.width/2,0);
view_mc.lineStyle(discharge_width,0xFFFFFF);
for(var i:Number=0;i<discharge;i++){
for(var j:Number=0;j<discharge_num;j++){
view_mc.lineTo(xx[i][j],yy[j]);
}
}
view_mc.filters=[param];
}
setInterval(loop,33);

コメントする