ランダムで桜を降らせる(FlashLite1.1)

トゥイーンではなく、ActionScriptで桜を降らせる方法を説明します。
ちょっと難しいです。


1まず、桜をFlash上で作成します。
もちろん、イラストレーターなどからパスを持ってきてもOKです。



2そして、この桜を右クリックのメニュー下の方「シンボルに変換」を選択します。
名前は適当でいいです。
ここでは「sakuraMC」としました。(下図参照)




3プロパティウィンドウでインスタンス名を「sakura」とします。(右図参照)
この名前はあとでActionScriptで使用します。



4いよいよActionScriptです。

桜のムービークリップは枠(この場合は240X400)の外に置きます。
そして1フレーム目にActionScriptを書き込みます。

このActionScriptで何をするかというと、
さきほど作ったムービークリップ「sakura」をコピーし、画面上に配置する。
ということを行っています。



//ActionScriptここから
//Flash待ち受けのサイズを指定します。
//これは、この範囲内で桜が落ちるという指定になります。


sw = 240;//横サイズ
sh = 400;//縦サイズ

//下記scriptでは同時に落ちる桜の数を指定します。
//この場合は50にしています。
//実際の落ち具合をみて後で調整しましょう。


for (i=0; i<50; i++) {
sk = "sakura" add i;

duplicateMovieClip("sakura", sk, i);//duplicateMovieClipでsakuraを i 個コピー(複製)します。

scla = random(50)+50;//桜の大きさをランダムで設定します。
scl = scla*0.2;

//コピーした50個の桜ムービークリップを配置します。
tellTarget (sk) {
_x = random(100)*2.4;//横軸の位置
_y = random(100)*4;//縦軸の位置
_rotation = random(180);//角度
_xscale = ../:scl;//横方向大きさ(倍率)
_yscale = ../:scl;//縦方向の大きさ(倍率
}

//後で使う変数を設定します。
set("spd" add i, random(100)* 0.02+1);//落下速度
set("flick" add i, random(100)* 0.04-2);//落ちる方向(ななめとか)
}

//ActionScriptここまで

1フレーム目のActionScriptは以上です。



5続いて2フレーム目にもActionScriptを書き込みます

2フレーム目では50個それぞれの桜ムービークリップを実際に動かします


//ActionScriptここから

//この50という数値は1フレーム目で設定した桜をコピーする数です。

for (i=0; i<50; i++) {
sk = "sakura" add i;

ysy = eval("spd" add i);
xxa = eval("flick" add i);

//縦横それぞれ動かします。
tellTarget(sk) {
_y += ../:ysy;
_x += ../:xxa;
}

//縦400の枠より下に行ったら、一番上に戻します。
//410としているのは桜自体の大きさも考慮しています。
//-20としているのも同様の理由です。実際の具合をみて調整しましょう。

sky = getProperty(sk,_y);
if (sky>410) {
tellTarget(sk){
_y = -20;
}
}

//240の横幅よりも、はみでてしまったら内側に戻します。
//縦の時と同様に桜の大きさを考えて250、-10としています。実際の具合をみて調整しましょう。

skx = getProperty(sk,_x);
if (skx > 250 || skx < -10) {
xsx = random(100) * 2.4 ;
tellTarget(sk){
_x = ../:xsx;
_y = -20;
}
}
}

//ActionScriptここまで



63フレーム目にもActionScriptを。
2〜3フレームをひたすら繰り返して再生するように設定します。


//ActionScriptここから

gotoAndPlay(2);

//ActionScriptここまで
ここまででも十分なのですが、
少し工夫を加えたいと思います。

7桜がひらひら落ちるのを表現するために桜をゆっくり回転させましょう。

最初に設定した桜のムービークリップ「sakuraMC」を
最初と同様に右クリックし、「シンボルに変換」し
ムービークリップにします。
名前は適当でいいです。
インスタンス名を「skl」とします。


このムービークリップの1フレーム目にActionScriptを書き込みます。

ここでは5度づつ回転するように設定しています。

Flashのバグなのかわかりませんが、
ずっと回転していると、少しずつ小さくなっていってしまうので、
それを修正する設定も行っています。


//ActionScriptここから

vvv = skl._rotation;
if(vvv<360){
tellTarget("skl"){
_rotation += 5;//5度回転

_xscale = 100;//横倍率を100%に戻す
_yscale = 100;//縦倍率を100%に戻す
}
}

//ActionScriptここまで

これで完成です。

雪が降る場合などにも応用がききますので
ぜひ覚えておきたいですね!


参考Flash待ち受け

http://garaku.tv/work-download/?work_no=43098 http://garaku.tv/work-download/?work_no=42561 http://garaku.tv/work-download/?work_no=43229