Screen Saver: Longinus in Golgotha

Longinus in Golgotha

スクリーンセーバーを新しく作成しました。気に入られた方は下記ページのリンク先よりダウンロードしてお使いください。

Longinus in Golgotha

Screen Saver Download

ロンギヌスという単語がなんとなく最初に浮かんだのがきっかけで、制作の過程で花や植物が生い茂るイメージに変わっていきました。
ソースファイル

1. パラメータを定義

var sw:Number = Stage.width; //ステージの横サイズ
  var sh:Number = Stage.height; //ステージの縦サイズ
  var interval:Number = 1000; //模様を描く間隔
  var scl:Number = 20; //模様の拡縮率
  var as:Number = 10; //模様が消えてゆく速度
  var generate:Number = 120; //細かい模様が一度に描かれる数
  var dead:Number = 15; //削除される[15]個前の古いオブジェクト

2-1. 1秒間隔で模様を生成

var intervalID = setInterval(makenew, interval);

2-2. オブジェクトの傾き・座標を変更しながら生成

onEnterFrame = function () {
   init();
   setVariables();
  }

function init() {
   if (Math.random()<.4 && n<5) {
    makenew();
   }
  }

function setVariables() {
   rot = -30*Math.sin(Math.PI/180*theta);
   theta += v;
   v += Math.random()*3-1.5;
   v = Math.max(v, -5);
   v = Math.min(v, 5);
  }

3-1. 模様のパーツを連続して生成

function makenew() {
   var newmc:MovieClip = attachMovie("nug", "newmc"+n, n++);
   newmc._x = randRange(0, randmax)*sw/6;
   newmc._y = randRange(0, randmax)*sh/6;
   newmc._xscale = scl;
   newmc._yscale = scl;
   newmc._rotation = 180;
   newmc.depth = depth;
   newmc.frame = 0;
   if (Math.random()>.1) {
    newmc.icon.petal._visible = false;
   }
   newmc.onEnterFrame = iterate;
   n  }

function iterate() {
   if (this.depth<generate) {
    var newnug:MovieClip = this.attachMovie("nug", "newnug", 2);
    newnug._y = -100;
    newnug._xscale = 98.7;
    newnug._yscale = 98.7;
    newnug._rotation = rot+Math.random()*10-5;
    newnug.depth = this.depth+1;
    newnug.frame = 0;
    if (Math.random()>.1) {
     newnug.icon.petal._visible = false;
    }
    newnug.onEnterFrame = iterate;
    delete this.onEnterFrame;
   }
  }

3-2. 古くなったオブジェクトを削除

function deleter(obj:String, id:Number) {
   eval(obj+(id-dead)).onEnterFrame = function() {
    this._alpha>0 ? this._alpha -= as : this.removeMovieClip();
   }
  }