MovieClipアクション
イラストを作成
- イラストはIllustratorで描画し、ステージに読み込みます(同一バージョンでは、コピー&ペースト)
(1)新規ドキュメント[Web]で、イラストを描画する
(2)コピーをして、Flash(ステージ上)でペースト
シンボルとインスタンス
- 「ライブラリ」に格納してあるオブジェクトを「シンボル」と呼ぶ
シンボルの特徴
- ムービークリップシンボル:ActionScriptを扱うことができる
- ボタンシンボル:ロールオーバーなどの演出ができる(AS3では、ボタンの定義ができない)
- グラフィックシンボル:タイムラインアニメーションのときのみ使う
ムービークリップ・アクション
(1)レイヤーを追加し、レイヤー名を「Action」にする
(2)スクリプトペインに記述する
- Actionレイヤーの「1フレーム」を選択して記述する
横に移動する
- 初期値を入力する
var moveX:Number = 5;
- 再生ヘッドがフレームを読むたびに実行される処理を無名関数として記述する
this.onEnterFrame = function() { }
- 無名関数の中に、実行される処理を記述する
this.onEnterFrame = function() { kuma_mc._x += moveX; }
- [Ctrl + Enter]でムービープレビューで動くことを確認する
ムービークリップが右端から左端に瞬間移動
- ムービークリップの左端がステージの右端をすぎた瞬間にという条件を記述する
var rightEdge:Number = 550; var w:Number = kuma_mc._width/2; if( kuma_mc._x > rightEdge + w ) { }
- ムービークリップの左端がステージの右端をすぎた瞬間に実行する処理を記述する
kuma_mc._x = leftEdge - w;
まとめると
var moveX:Number = 5; var rightEdge:Number = 550; var leftEdge:Number = 0; var w:Number = kuma_mc._width/2; this.onEnterFrame = function() { if( kuma_mc._x > rightEdge + w ) { kuma_mc._x = leftEdge - w; } kuma_mc._x += moveX; }
X軸を移動し、端にぶつかったら逆に移動する
- 動き続けるムービーのため代入は「+=」で実行します
- ただし、反転(マイナスの値が代入)するために「-1」を掛けます
- moveX = moveX × (-1);
var moveX:Number = 5; var rightEdge:Number = 550; var leftEdge:Number = 0; var w:Number = kuma_mc._width/2; this.onEnterFrame = function() { if( kuma_mc._x > rightEdge - w ) { moveX *= -1; } f( kuma_mc._x < leftEdge + w ) { moveX *= -1; } kuma_mc._x += moveX; }
2つの条件の実行処理が同じなので、まとめます。
var moveX:Number = 5; var rightEdge:Number = 550; var leftEdge:Number = 0; var w:Number = kuma_mc._width/2; this.onEnterFrame = function() { if( kuma_mc._x > rightEdge - w || kuma_mc._x < leftEdge + w ) { moveX *= -1; } kuma_mc._x += moveX; }
縦の動きを加える
var moveX:Number = 5; var moveY:Number = 5; var rightEdge:Number = 550; var leftEdge:Number = 0; var topEdge:Number = 0; var bottomEdge:Number = 400; var w:Number = kuma_mc._width/2; var h:Number = kuma_mc._height/2; this.onEnterFrame = function() { if( kuma_mc._x > rightEdge - w || kuma_mc._x < leftEdge + w ) { moveX *= -1; } kuma_mc._x += moveX; if( kuma_mc._y > bottomEdge - h || kuma_mc._y < topEdge + h ) { moveY *= -1; } kuma_mc._y += moveY; }