イベントハンドラメソッド

イベント

「いつ」を設定する部分になります。



onClipEvent (イベント) {
 処理1
 処理2
  …

onClipEventハンドラ
イベント 説明
load ムービークリップインスタンスが load(生成)された。
unload ムービークリップインスタンスが unload(削除)された。
enterFrame フレームが更新された。
mouseDown ステージ上で、マウスボタンが押された。
mouseUp ステージ上で、押されていたマウスボタンが離された。
mouseMove ステージ上で、マウスカーソルが動いた。
keyDown ムービークリップの総バイト数を返す。
keyUp ムービークリップの深度(親ムービークリップ座標空間の重なり順)を返す。
data 外部データ(swf、テキスト、jpeg、MP3)がload された(一部はセッションごとに発生)。


この場合、「連続的」に処理を実行するので、イベントは「enterFrame」を利用します。

イベントを考える
  1. ムービークリップシンボル「ball」、インスタンス名「ball_mc」をつくります。
  2. 「ball_mc」に、以下のように記述します。
onClipEvent (enterFrame) {
	trace("enterFrame");
}


この結果、「出力パネル」に「enterFrame」という文字が繰り返し表示されます。


  1. 「" ダブルクォート」で囲まれた文字は「文字列」として表示される
  2. 「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 インスタンスがフォーカスを受け取った。

演習

ロードされた時点で動くムービー
  1. 新規ドキュメント作成(ActionScript2.0
  2. 描画
  3. シンボルに変換(ムービークリップ
  4. 「プロパティ」パネルで、インスタンス名をつける
  5. レイヤーを追加し、名前を「Action」とする


タイムラインに記述

this.onEnterFrame = function() {
	maru_mc._x += 10;
}


文法上の正確な記述に修正

var maru_mc:MovieClip;
var speed:Number=10;

this.onEnterFrame = function() {
	maru_mc._x += speed;
}