Screen Saver: Squall

Squall

Screen Saver: Squall

Preview for Windows for Macintosh

強風や嵐、混沌をコンセプトに作成したスクリーンセーバーです。

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);
 }

Source