サイトトップ

Director Flash 書籍 業務内容 プロフィール
オブジェクト指向で考えるActionScript − Flash MXでより進んだWebデザイン作成 −
>>>補足および正誤表
モーショングラフィックスで学ぶActionScript モーショングラフィックスで学ぶActionScript − Flash MX −
>>>補足および正誤表
Flash OOP FLASH OOP − ActionScriptによるオブジェクト指向プログラミング
>>>補足および正誤表


Flash Power Session 2004 in Osaka
ActionScript 6つのテクニック

Date: 2004年9月10日 Product: Flash

*プレゼンテーションスライド(SWF)およびサンプルFLAファイル(Zip圧縮/約212KB)
SWFの再生にはFlash Player 6以降、ソースFLAファイルを開くにはFlash MX以降が必要です。

1. onClipEventのEscショートカットキー
[esc] - o - c

図001■Escショートカットで入力されたonClipEventハンドラ

表示されたコードヒントからイベントが即座に選択できる。したがって、onClipEvent (enterFrame)なら、[esc] - o - c - e - [enter]または[return]で入力完了。

2. thisにコードヒントを表示

// MovieClip this;

スクリプトペイン(スクリプト記述領域)の先頭行に、コメント区切り記号//に続けて、クラス名と識別子を入力する。通常のインスタンス名なら、接尾辞をつけた方が早い。このテクニックを使用する必要があるのは、もっぱらthisだろう(「コードヒントの活用」参照)。

図002■コメントでthisをMovieClipとして宣言

"this."とドット(.)をタイプするとコードヒントが表示される。ただし、「_」(アンダースコア)つきプロパティがリストされるのは、MX 2004から。

3. 座標から角度を計算する
座標(x, y)の角度(度数) = Math.atan2(y座標, x座標)/Math.PI*180

Math.atan2(y座標, x座標): 座標(x, y)の角度をラジアン値で返すメソッド。atanはtanの逆関数「アークタンジェント」を意味する。しかし、atan2はプログラム用に改造された関数で、数学の三角関数には存在しない。

ラジアン値の度数への変換: 360度は2πラジアンになる。したがって、ラジアン値をrとすると、度数に変換した角度θとは、以下の等式が成り立つ。

   r/2π = θ/360
   θ = 360r/2π = 180r/π

4. イーズアウトの公式

プロパティ設定値 += インスタンスから見た相対的な目標値 * 減速率
または、
プロパティ設定値 += (プロパティの目標値 - 現在のプロパティ値) * 減速率
*0 < 減速率 < 1

差を割引いて足込む」(「MovieClipのターゲットパスとプロパティ」参照)

5. イベントハンドラメソッドのスタイル

// MovieClip: イベントハンドラを設定するインスタンス
// フレームアクション
ターゲットパス.onイベント = function() {
   ステートメント;
};

イベントハンドラメソッド名は、onまたはonClipEventハンドラのイベント名の前に「on」をつける。

6. functionのEscショートカットキー
[esc] - f - n

図003■Escショートカットで入力されたfunction

funtion名を入力する位置に挿入ポイントが表示される

7. 完成 − マウスポインタの方向に減速しながら回転するスクリプト

スクリプト001■onClipEventハンドラを使ったMovieClipアクション(Rotation1.fla)

// 2. thisにコードヒントを表示
// MovieClip this;
// 1. onClipEventのEscショートカットキー
onClipEvent (enterFrame) {
  // 4. イーズアウトの公式
  this._rotation +=
    // 3. 座標から角度を計算する
    Math.atan2(this._ymouse, this._xmouse)/Math.PI*180*0.2;
}


スクリプト002■イベントハンドラメソッドを使ったフレームアクション(Rotation2.fla)

// MovieClip this;
// 5. イベントハンドラメソッドのスタイル
// 6. functionのEscショートカットキー
this.onEnterFrame = function() {
  this._rotation +=
    Math.atan2(this._ymouse, this._xmouse)/Math.PI*180*0.2;
};

[後記]「まちがいだらけのFlash MX 2004」というテーマでありながら、MX 2004にはまったくといってよいほど触れなかった。森さん&サブリンさんセッションで説明されたとおり、ムービーを作成しながら、ムービー中にスクリプトを記述する場合には、MXまでのスクリプテイングでとくに問題はないからである。

ActionScript 2.0を使用する必要があるのは、特定のFlashムービーに限定されない汎用的なスクリプトを、外部ActionScriptクラス定義ファイルとして作成する場合である。Flash 5からActionScript 2.0までのスクリプティングスタイルとその違いについては、F-siteセミナーノート「ActionScriptどこに書く? − MXスタイルからAS2.0まで」を参照してほしい。

_____

作成者: 野中文雄
作成日: 2004年9月10日


Copyright © 2001-2006 Fumio Nonaka.  All rights reserved.