import flash.geom.Matrix;
import flash.filters.BlurFilter;
//作曲者の名前を配列で定義
var composer:Array=new Array("Bach","Handel","Beethoven",
"Mozart","Brahms","Chopin","Schumann","Tchaicovsky",
"Mendelssohn","Shostakovich");
//作曲者の数
var num = composer.length;
//各種変数の定義
var speed:Number; //マウスに反応して運動する時の角速度
var diff:Number = 0; //フレームごとのspeedの増分
var rd:Number; //各パネルの表示角
var a:Number; //Matrix定義プロパティー(b,c,d,mcx,mcyも同様) 「ムービークリップの変形にMatrixを使ってみる」を参照
var depth:Number; //深度
var v:Number; //Blur(ぼかし)定義プロパティー
//作曲者名表示用ムービークリップ
this.createEmptyMovieClip("composerNameBox",100);
composerNameBox.createTextField("tf",100,0,0,200,25);
composerNameBox._x = 300;
//作曲者の表示と円運動関数の呼び出し
for (i=1; i<=num; i++) {
var mc = this.attachMovie("sp"+i, "sp"+i, i);
mc.n = i;
mc.onEnterFrame = circulating;
}
//円運動関数
function circulating() {
speed = (Stage.width/2-_xmouse)*0.01*0.001*Math.PI;
diff += speed;
rd = diff+this.n/num*2*Math.PI;
a = Math.sin(rd)
b = 0.5*Math.cos(rd);
c = 0;
d = 1;
mcx = 350-300*Math.cos(rd);
mcy = 200+50*Math.sin(rd);
var myMatrix:Matrix = new Matrix(a, b, c, d, mcx, mcy);
this.transform.matrix = myMatrix;
depth = Math.floor((1+Math.sin(rd))*100);
this.swapDepths(depth);
if (this.rollover) {
v = 1;
} else {
v = Math.floor((1-Math.sin(rd))*3.5);
}
blurChange(this);
this.onRollOver=function() {
this.rollover = true;
composerNameBox.tf.text = composer[this.n-1];
txtFormat(composerNameBox);
}
this.onRollOut=function() {
this.rollover = false;
composerNameBox.tf.text = "";
}
}
//ぼかし付与関数
function blurChange(this_mc) {
var myBlur:BlurFilter = new BlurFilter(v, v, 1);
this_mc.filters = [myBlur];
}
//テキストのフォーマット定義関数
function txtFormat(mc) {
var format = new TextFormat();
with (format) {
size = 20;
color = 0xffffff;
align = "left";
bold = true;
}
mc.tf.setTextFormat(format);
} |
import flash.geom.Matrix;
import flash.filters.BlurFilter;
var composer:Array=new Array("Bach","Handel","Beethoven",
"Mozart","Brahms","Chopin","Schumann","Tchaicovsky",
"Mendelssohn","Shostakovich");
var num = 10;
var speed:Number;
var diff:Number = 0;
var rd:Number;
var a:Number;
var depth:Number;
this.createEmptyMovieClip("composerNameBox",100);
composerNameBox.createTextField("tf",100,0,0,200,25);
composerNameBox._x = 300;
for (i=1; i<=num; i++) {
var mc = this.attachMovie("sp"+i, "sp"+i, i);
mc.n = i;
mc.onEnterFrame = circulating;
}
function circulating() {
speed = (Stage.width/2-_xmouse)*0.01*0.002*Math.PI/2;
diff += speed;
rd = diff+this.n/num*2*Math.PI;
var a = 2*Math.sin(rd);
var b = 0.5*Math.cos(rd);//b=c=0にすると傾きのない
var c = -0.5*Math.cos(rd);//シンプルなものになる
var d = 2*Math.sin(rd);
var mcx = 360-300*Math.cos(rd);
var mcy = 170+50*Math.sin(rd);
var myMatrix:Matrix = new Matrix(a, b, c, d, mcx, mcy);
this.transform.matrix = myMatrix;
if (Math.sin(rd)<0) {
this._visible = false;
} else {
this._visible = true;
}
depth = Math.floor((1+Math.sin(rd))*100);
this.swapDepths(depth);
this.onRollOver=function() {
this.rollover = true;
composerNameBox.tf.text = composer[this.n-1];
txtFormat(composerNameBox);
}
this.onRollOut=function() {
this.rollover = false;
composerNameBox.tf.text = "";
}
}
function txtFormat(mc) {
var format = new TextFormat();
with (format) {
size = 20;
color = 0xffffff;
align = "left";
bold = true;
}
mc.tf.setTextFormat(format);
} |