Screen Saver: Squall
強風や嵐、混沌をコンセプトに作成したスクリーンセーバーです。
Screen Saver: Shineと同じメソッドを使用しています。変更した箇所を下記ソースコード内、黒字で示しています。
1. 基本設定
Stage.align = "TL";
Stage.scaleMode = "noScale";
_quality = "LOW";
2. 変数の定義
var sw:Number = Stage.width;//ステージサイズ
var linemax:Number = 192;//ライン最大複製個数
var xmin:Number = getXposition();//x座標最小値
var xmax:Number = sw;//x座標最大値
var rotationmin:Number = -15;//回転角度最小値
var rotationmax:Number = 30;//回転角度最大値
var alphamin:Number = 5;//アルファ最小値
var alphamax:Number = 30;//アルファ最大値
var c:Number;//ライン複製回数
var d:Number;//繰り返し回数
var r:Boolean;//true:偶数回 / false:奇数回 | 繰り返す毎に切り替え
3. ラインを複製
function iterate():Void {
if (c<linemax) {
eval("squall_mc.line_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 {
xmax = randRange(0, sw);
xmin = getXposition();
//r ? r=false : r=true;
d++;
c = 0;
}
}
squall_mc.onEnterFrame = iterate;
a. X座標を返す
function getXposition():Number {
return -1*(sw/5);
}
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);
}