イベントハンドラメソッド
イベント
「いつ」を設定する部分になります。
- ActionScriptでは「イベントハンドラ」という構造で、イベントでおこなう処理を管理します。
onClipEvent (イベント) {
処理1
処理2
…
onClipEventハンドラ
イベント | 説明 |
---|---|
load | ムービークリップインスタンスが 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 | ムービークリップのカレントフレーム(フレーム番号) |
_totalframes | ムービークリップのトータルフレーム数 |
_framesloaded | ムービークリップのロードされたフレーム数 |
_droptarget | ムービークリップをドロップするターゲットのインスタンス名 |
_xmouse | マウスの x 座標 |
_ymouse | マウスの 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; }
書き換えると
onClipEvent (load) { speed = 1; //移動速度 } onClipEvent (enterFrame) { this._x += speed; }
イベントハンドラ
- 「イベントハンドラ」は、ムービー再生中に発生するイベントを感知する
- オブジェクトに命令する動作内容を自由に作ることができる「メソッド」の一種
onRelease
オブジェクトがクリックされたとき〜する
onRollOver
オブジェクトの上にポインタが乗った状態のとき〜する
onKeyDown
あるキーが押されたとき〜する
ムービークリップのイベントハンドラメソッド
イベント | 説明 |
---|---|
onLoad | onClipEvent ( load ) ハンドラのイベントハンドラメソッド版 |
onUnload | onClipEvent ( unLoad ) ハンドラのイベントハンドラメソッド版 |
onEnterFrame | onClipEvent ( enterFrame ) ハンドラのイベントハンドラメソッド版 |
onMouseDown | onClipEvent ( mouseDown ) ハンドラのイベントハンドラメソッド版 |
onMouseUp | onClipEvent ( mouseUp ) ハンドラのイベントハンドラメソッド版 |
onMouseMove | onClipEvent ( mouseMove ) ハンドラのイベントハンドラメソッド版 |
onKeyDown | onClipEvent ( keyDown ) ハンドラのイベントハンドラメソッド版 |
onKeyUp | onClipEvent ( keyUp ) ハンドラのイベントハンドラメソッド版 |
onData | onClipEvent ( data ) ハンドラのイベントハンドラメソッド版 |
ボタンのイベントハンドラメソッド
onPress | on ( press ) ハンドラのイベントハンドラメソッド版 |
---|---|
onRelease | on ( release ) ハンドラのイベントハンドラメソッド版 |
onReleaseOutside | on ( releaseOutside ) ハンドラのイベントハンドラメソッド版 |
onRollOut | on ( rollOut ) ハンドラのイベントハンドラメソッド版 |
onRollOver | on ( rollOver ) ハンドラのイベントハンドラメソッド版 |
onDragOut | on ( dragOut ) ハンドラのイベントハンドラメソッド版 |
onDragOver | on ( dragOver ) ハンドラのイベントハンドラメソッド版 |
onKillFocus | インスタンスがフォーカスを失った。 |
onSetFocus | インスタンスがフォーカスを受け取った。 |
演習
ロードされた時点で動くムービー
- 新規ドキュメント作成(ActionScript2.0)
- 描画
- シンボルに変換(ムービークリップ)
- 「プロパティ」パネルで、インスタンス名をつける
- レイヤーを追加し、名前を「Action」とする
タイムラインに記述
this.onEnterFrame = function() { maru_mc._x += 10; }
文法上の正確な記述に修正
var maru_mc:MovieClip; var speed:Number=10; this.onEnterFrame = function() { maru_mc._x += speed; }