ActionScript アルゴリズムの構築
イベントハンドラ
イベント
「いつ」
- ActionScriptでは「イベントハンドラ」という構造で、イベントで行う処理を管理します。
onClipEvent(イベント) 処理1 処理2
◇ onClipEventハンドラ
イベント | 説明 | |
load | ムービークリップインスタンスが(生成)された | |
unload | ムービークリップインスタンスがunload(削除)された | |
enterFrame | フレームが更新された | |
mouseDown | ステージ上で、マウスボタンが押された | |
mouseUp | ステージ上で、押されていたマウスボタンが離された | |
mouseMove | ステージ上で、マウスカーソルが動いた。 | |
keyDown | ムービークリップの総バイト数を返す。 | |
keyUp | ムービークリップの深度(親ムービークリップの座標空間の重なり順)を返す | |
data | 外部データ(swf、テキスト、jpeg、MP3)がloadされた(一部はセッション毎に発生)。 |
この場合、「連続的に」処理を実行するので、イベントは「enterFrame」を利用します。
イベントを考える
onClipEvent(enterFrame){ trace("enterFrame"); }
この結果、出力パネルに「enterFrame」をいう文字が繰り返し表示されます
- 「"ダブルクォート」で囲まれた文字は「文字列」として表示される
- 「enterFrame」は、再生ヘッドを読むたびに処理を実行する
処理を考える
処理とは、「何をするか」を設定する部分になります。
処理の間隔は「24fps」の場合、1/24秒毎でる。
- オブジェクト
- オブジェクトとは「特定の機能を持ったもの」のことです。
- ムービークリップはオブジェクトです
- プロパティ
- プロパティとは、オブジェクトの特性・属性を表します
プロパティ | 説明 | |
_x | ムービークリップの配置位置(X座標、ピクセル) | |
_y | ムービークリップの(Y座標、ピクセル) | |
_rotation | ムービークリップの配置角度 | |
_name | ムービークリップのインスタンス名 | |
_xscale | ムービークリップのX軸方向の拡大縮小率(パーセント) | |
_yscale | ムービークリップのY軸方向の拡大縮小率(パーセント) | |
_alpha | ムービークリップの透明度 | |
_visible | ムービークリップの表示・非表示 | |
_width | ムービークリップの幅(ピクセル) | |
_height | ムービークリップの高さ(ピクセル) | |
_target | ムービークリップのターゲットパス | |
_url | ムービークリップを含むSWFファイルのURL | |
_currentframe | ムービークリップの可憐とファーム(フレーム番号) | |
_totlframes | ムービークリップのトータルフレーム数 | |
_framesloaded | ムービークリップをドロップするターゲットのインスタンス名 | |
_droptarget | マウスのx座標 | |
_xmouse | マウスのy座標 | |
_focusrect | フォーカス枠の表示・非表示 |
- ドットシンタックス
- プロパティにはどのオブジェクトのプロパティ科がわかるように「オブジェクト名」も記述します。
- 文法としては、「オブジェクト.プロパティ」というように「ドット」でつないで記述します。
ball_mc._x //ball_mcのプロパティ(x座標位置)
対称とするオブジェクトがスクリプトを書いたオブジェクト自身のときには「this」でおきかえることが可能です。
通常は、汎用性を高める為に「this」を使います。
- 変数
- どのようにプロパティを処理したら「右に移動し続ける」ことを実行できるのでしょうか。
onClipEvent(enterFrame){ this._x = this._x + 1; trace(_x); }
「=」を使い代入をします。
ActionScriptでは「=」は、右の値を左の変数に代入するという意味。
- 代入演算子
演算子 | 処理内容 | |
= | 代入 | |
+= | 加算して代入 | |
-= | 減算して代入 | |
= | 乗算して代入 | |
---|---|---|
/= | 序算して代入 | |
%= | 剰余して代入 |
- 座標系
- ステージの左上が原点(X=0,y=0)
- Y座標は、下に増加する
ムービークリップに、以下のように記述することで「1/24秒に1px右に移動する連続した動き」を作ることが出来ます。
onClipEvent(enterFrame){ this._x + 1; }
書き換えると
/* ムービークリップを移動するActionSctipt 2012.6.04 */ onClipEvent(load){ speed = 1;//移動速度 } onClipEvent(enterFrame){ this._x=+=speed; }
練習課題
ufoのアクション ムービークリップ
onClipEvent(load){ speed = 0; accel = 1; } onClipEvent(enterFrame){ //徐々に加速度を足す speed += accel; //X座標に速度を足します this._x += speed; //speedが徐々に上がるのを確認します //trace(speed); }
buttonのアクション ムービークリップ
onClipEvent (mouseUp) { Object(this._parent).ufo_mc._x=62; //ターゲットパスを使用 Object(this._parent).ufo_mc.speed=0; //スピードと座標位置を最初の位置に指定。 }