ボタンで制御
ボタンからムービークリップを動かす
- onハンドラからイベントハンドラメソッドに変更する過程を理解する
Illustratorでイラストを作成
- グループ化しない
- IllustratorからFlashへ、コピー&ペースト(ただし、同一バージョンに限ります)
このまま「修正」→「シンボルに変換」→「ムービークリップ」にします。
- 使用するバージョンが違う場合は、Illustratorでの保存時点でバージョンをあわせます
- そのファイルをFlashで、「ファイル」→「読み込み」→「ステージに読み込み」
ボタンインスタンスを準備する
(1)ボタンに動きのみを記述する
※間違った記述
on (release) { this._rotation += 10; }
この記述では、ステージ全体が回転します。
on (release) { bear_mc._rotation += 10; }
匿名関数(イベントハンドラメソッド)の場合
var angle:Number = 10; rotation_btn.onRelease = function() { bear_mc._rotation += angle; }
ユーザー定義関数の場合
var angle:Number = 10; rotation_btn.onRelease = bearAngle; function bearAngle():Void { bear_mc._rotation += angle; }
ボタンを押し続けると動く、離すと止まる
(1)ボタンに押したときのみの記述する
※間違った記述
on (press) { var angle:Number = 10; bear_mc._rotation += angle; }
(2)読み込まれるたびに(onEnterFrame)
on (press) { bear_mc.onEnterFrame = function() { bear_mc._rotation += 10; } }
動きますが、マウスを離しても止まりません。
(3)マウスを離したときの設定を追加します
on (press) { var angle:Number = 10; bear_mc.onEnterFrame = function() { bear_mc._rotation += angle; } } on (release) { bear_mc.onEnterFrame = undefined; }
undefined:未定義
- 値が設定されていないことを表す特殊なデータ型です。
匿名関数の場合
var angle:Number = 10; rotation_btn.onPress = function() { bear_mc.onEnterFrame = function() { bear_mc._rotation += angle; } } rotation_btn.onRelease = function() { bear_mc.onEnterFrame = undefined; }
ユーザー定義関数の場合
var angle:Number = 10; rotation_btn.onPress = bearAngle; function bearAngle():Void { bear_mc.onEnterFrame = function() { bear_mc._rotation += angle; } } rotation_btn.onRelease = bearStop; function bearStop():Void { bear_mc.onEnterFrame = undefined; }
ボタンが押されるたびに
オブジェクトアクション
- 各ボタンに記述します。
on (release) { var rate:Number = 10; lemon_mc._y -= rate; }
イベントハンドラメソッド(匿名関数)
- タイムラインに記述します。
var rate:Number = 10; top_btn.onRelease = function() { lemon_mc._y -= rate; } right_btn.onRelease = function() { lemon_mc._x += rate; } bottom_btn.onRelease = function() { lemon_mc._y += rate; } left_btn.onRelease = function() { lemon_mc._x -= rate; }
カスタム関数(ユーザー定義関数)
- タイムラインに記述します。
var rate:Number = 10; top_btn.onRelease = upMove; function upMove():Void { lemon_mc._y -= rate; } right_btn.onRelease = rightMove; function rightMove():Void { lemon_mc._x += rate; } bottom_btn.onRelease = bottomMove; function bottomMove():Void { lemon_mc._y += rate; } left_btn.onRelease = leftMove; function leftMove():Void { lemon_mc._x -= rate; }
ボタンを押し続けると
オブジェクトアクション
- 各ボタンに記述します。
on (press) { peach_mc.onEnterFrame = function() { var rate = 10; peach_mc._y -= rate; if(peach_mc._y <= -10) { peach_mc._y =310; } } } on (release) { peach_mc.onEnterFrame = undefined; }
イベントハンドラメソッド(匿名関数)
- タイムラインに記述します。
var rate:Number = 10; top_btn.onPress = function() { peach_mc.onEnterFrame = function() { peach_mc._y -= rate; if(peach_mc._y <= -peach_mc._height/2) { peach_mc._y =300+peach_mc._height/2; } } } top_btn.onRelease = function() { peach_mc.onEnterFrame = undefined; } right_btn.onPress = function() { peach_mc.onEnterFrame = function() { peach_mc._x += rate; if(peach_mc._x >= 500+peach_mc._width/2) { peach_mc._x = -peach_mc._width/2; } } } right_btn.onRelease = function() { peach_mc.onEnterFrame = undefined; } bottom_btn.onPress = function() { peach_mc.onEnterFrame = function() { peach_mc._y += rate; if(peach_mc._y >= 300+peach_mc._height/2) { peach_mc._y = -peach_mc._height/2; } } } bottom_btn.onRelease = function() { peach_mc.onEnterFrame = undefined; } left_btn.onPress = function() { peach_mc.onEnterFrame = function() { peach_mc._x -= rate; if(peach_mc._x <= -peach_mc._width/2) { peach_mc._x = 500+peach_mc._width/2; } } } left_btn.onRelease = function() { peach_mc.onEnterFrame = undefined; }