ActionScript アルゴリズムの構築

「いつ」「なにをするのか」

このフラッシュムービーは、「連続的に」「ムービークリップが右に移動する」となります。

イベントハンドラ

イベント

「いつ」

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

◇ onClipEventハンドラ

イベント 説明
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 ムービークリップの可憐とファーム(フレーム番号)
_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);
}

//traceで確認

buttonのアクション ムービークリップ

onClipEvent (mouseUp) {
	Object(this._parent).ufo_mc._x=62; //ターゲットパスを使用
	Object(this._parent).ufo_mc.speed=0; //スピードと座標位置を最初の位置に指定。
}