FLASHのお勉強 ーアクションスクリプトの実践的事始めー |
|
(12)ランダムモーション(2) |
|
前項で位置や方向、色などをランダムに発生させてインスタンスを動かす例を勉強したが、今回はその続きとしてWebでよく見かける、写真の上をランダムに発生した帯が行き交うと言う手法を勉強したい。 写真をそのまま見せたほうが落ち着いてていいようにも思うし、また一般的には白い帯が行き交うのに、本稿では色つきになっていてかえってうるさい感じもあるが、ランダム発生のお勉強として見ていただきたい。 ここでは、帯の幅、移動スピード、色がランダムに発生する。 行き交う帯の幅、色は、ステージの端で折り返すたびに新しい設定に変わるように発生させている。 |
|
写真は友人の橋本直弘さんのサイトからDLさせていただきました。 http://www.lci.gr.jp/users/naohiro |
|
| 帯の作成 480×320のキャンバス内にインスタンス(帯、bar)を描き、シンボルに変換、インスタンス名をbarとする。 リンケージプロパティーで識別子をbarに、「actionscriptに書き出し」にチェックを入れる。 ついで、ステージからインスタンスを削除する。 |
|
| スクリプト FRAME1(root)に以下のスクリプトを書き込む var bar:Array=new Array(); bar_num = 6; for ( i=1; i<=bar_num; i++) { _root.attachMovie("bar","bar"+i,i ); bar[i]=eval("bar"+i); bar[i]._x = Math.random()*480; bar[i]._y = 160; bar[i]._width = 15+Math.random()*50; bar[i]._alpha = 35; bar_color=new Color(bar[i]); bar_color.setRGB(Math.floor (Math.random()*255*255*255)); bar[i].vx = 5+Math.round(Math.random()*15); bar[i].onEnterFrame = bar_movement; } function bar_movement() { this._x += this.vx; if (this._x<-20) { this._x=-20; this.vx=-this.vx; this._width = 20+Math.random()*50; this_color=new Color(this); this_color.setRGB(Math.floor (Math.random()*255*255*255)); } else if (this._x>450) { this._x=450; this.vx=-this.vx; this._width = 20+Math.random()*50; this_color=new Color(this); this_color.setRGB(Math.floor (Math.random()*255*255*255)); } } |
配列の定義 帯の数 識別子barと言うインスタンスを元にbar1,....,bar6までのムービークリップを発生させ、bar[i]という配列で取り扱う bar[i]のx座標をステージ内にのどこかに無作為に設定する 発生させるbarの幅を50pixを最大とし無作為に設定 アルファー値を35%に カラーをランダムに設定 移動量(スピード)を15pix/frameを最大とするランダム値に設定 帯(bar)のフレームアクションの呼び出し 帯(bar)のアクション vxのスピードでx方向に移動 もし、ステージ左端に到達したら(-20以下) x=-20とし、方向を逆(正)方向に変える barの幅を無作為に変える 新しくカラーを無作為に設定 もし、ステージ右端に到達したら(450以上) xを450とし、方向を逆(負)方向に変える barの幅を無作為に変える 新しい色を発生させる |
|
|
|
| HOME お勉強総リスト | |