Screen Saver: Shine
光彩の重なりや目の錯覚をコンセプトに、CMYK+WHの5色を用いて作成したスクリーンセーバーです。
下記のソースコードでは、変更する場合のある箇所を黒字で示しています。*1
1. 基本設定
Stage.align = "TL";
Stage.scaleMode = "noScale";
_quality = "MIDDLE";
2. 変数の定義
var sw:Number = Stage.width;//ステージサイズ
var linemax:Number = 192;//ライン最大複製個数
var xmin:Number = getXposition();//x座標最小値
var xmax:Number = sw;//x座標最大値
var rotationmin:Number = -30;//回転角度最小値
var rotationmax:Number = 30;//回転角度最大値
var alphamin:Number = 5;//アルファ最小値
var alphamax:Number = 45;//アルファ最大値
var c:Number;//ライン複製回数
var d:Number;//繰り返し回数
var r:Boolean;//true:偶数回 / false:奇数回 | 繰り返す毎に切り替え
3. ラインを複製
function iterate():Void {
if (c<linemax) {
eval("squall_mc.line"+randRange(1, 4)+"_mc").duplicateMovieClip("line"+c,c);
//eval("squall_mc.line"+0+"_mc").duplicateMovieClip("line"+c,c);//モノクロームラインへ変更
var newline_mc:MovieClip = eval("squall_mc.line"+c);
var pastline_mc:MovieClip = eval("squall_mc.line"+(c-1));
newline_mc._x = pastline_mc._x+randRange(xmin, xmax);
newline_mc._rotation = pastline_mc._rotation+randRange(rotationmin, rotationmax);
newline_mc._alpha = randRange(alphamin, alphamax);
if (newline_mc._x<xmin) {
newline_mc._x = xmin;
}
if (newline_mc._x>xmax) {
newline_mc._x = xmax;
}
c++;
} else {
//r ? r=false : r=true; //奇数回/偶数回の判定
xmax = randRange(0, sw);
//r ? xmin=xmax : xmin=getXposition(); //偶数回に x座標最小値変更
xmin = getXposition();
d++;
c = 0;
}
}
squall_mc.onEnterFrame = iterate;
a. X座標を返す
function getXposition():Number {
return sw;
}
b. ウィンドウリサイズ時の修正
resizeListener = new Object();
resizeListener.onResize = function() {
sw = Stage.width;
xmin = getXposition();
xmax = sw;
};
Stage.addListener(resizeListener);
resizeListener.onResize();
c. 乱数の生成 [©Adobe Systems Incorporated]
//Copyright © 2009 Adobe Systems Incorporated. All Rights Reserved.
function randRange(min, max) {
var i = Math.floor(Math.random()*(max-min+1))+min;
return (i);
}