サイトトップ

Director Flash 書籍 業務内容 プロフィール
  今後開催されるActionScript 3.0セミナー
 
67
F-siteセミナー
【日  時】2006年8月26土曜日13:15-17:00
【場  所】国立オリンピック記念青少年総合センター センター棟4F-416室
【参加費用】1,000円
【予定内容】
[demo1]「はじめてのFlash Lite」梅原宗士(45分)
[demo2]「さて、どう組もう?Flash Lite」田中正吾(45分)
[demo3]「AS3.0で行こう!」野中文雄(60分)
[企業デモ]未定(15分)
67
Adobe + ROKUNANA presents Flash 8 INSPIRATION SCENE Summer Jam
【日  時】2006年9月6日水曜日13:30-18:00
【場  所】六本木ヒルズアカデミーヒルズ49タワーホール
【参加費用】無料
【予定内容】
[第1部]「Flash Professional 9 ActionScript 3.0 Preview必修解説」野中文雄(75分)
[第2部]「INSPIRATION SCENE Summer Jam Final Session」koji NISHIDA/タナカミノル/高木久之/トザキケイイチ/タロアウト(120分)
  ActionScript 3.0 Mailing List開設!

ActionScript 3.0 Debut Seminar

ActionScript 3.0書き方教室

Date: 2006年7月14日 Product: Flash

Platform: All
Viersion: 9.0

1. ActionScript 1.0イベントハンドラアクション

Flash 5スタイル。MovieClipアクションにイベントハンドラアクションonClipEvent()を記述して、イベントを指定する。アニメーションの処理は、enterFrameイベントが定石。初期設定の処理は、onClipEvent (load)ハンドラで行う。

以下のMovieClipアクション(スクリプト001)は、MovieClipインスタンスをマウスポインタに追随させる[*1]

スクリプト001■マウスポインタに追随するMovieClipアクション

// MovieClip: マウスポインタに追随するインスタンス
// MovieClipアクション
onClipEvent (load) {
  var nDeceleration = 0.2;   // 減速率(0から1の間の小数値)
}
onClipEvent (enterFrame) {
  _x += _xmouse*nDeceleration;
  _y += _ymouse*nDeceleration;
}


[*1] 減速のアニメーションについては、F-siteセミナー「MovieClipのターゲットパスとプロパティ」およびFlash Power Session 2004 in Osaka「ActionScript 6つのテクニック」の「4. イーズアウトの公式」参照

2. ActionScript 1.0イベントハンドラメソッド

Flash MXスタイル。フレームアクションにイベントハンドラメソッドを記述する。アニメーションの処理は、MovieClip.onEnterFrameイベントハンドラメソッドで行う。イベントハンドラメソッドは、決められた名前のfunction(関数)をMovieClipインスタンスに定義することにより設定できる[*2]

前述スクリプト001をイベントハンドラメソッドとしてMovieClipのフレームアクションとして定義すると、つぎのようになる(スクリプト002)。

スクリプト002■マウスポインタに追随するフレームアクション1.0

// MovieClip: マウスポインタに追随するインスタンス
// 第1フレームアクション
var nDeceleration = 0.2;
function onEnterFrame() {
  _x += _xmouse*nDeceleration;
  _y += _ymouse*nDeceleration;
}


[*2] 以下のふたつのfunction(関数)定義は、ほぼ同じ意味。

function onEnterFrame() { }

this.onEnterFrame = function() { }

3. ActionScript 3.0イベントリスナー

ActionScript 1.0のフレームアクション(スクリプト002)を、ActionScript 3.0のシンタックスに書替えてみる(スクリプト003)。

ActionScript 3.0では、イベントはリスナーに配信される。リスナーの登録には、EventDispatcher.addEventListener()メソッドを用いる。リスナーに指定したfunction(関数)の引数(バラメータ)の数が合わないと怒られる(図001)。クラスは長い正式名(完全修飾クラス名)で、importステートメントを記述しておく。

ActionScript 3.0では、プロパティ名の先頭には「_」(アンダースコア・アンダーバー)がつかない[*3]

ActionScript 2.0と同じく、変数(プロパティ)とfunction(関数・メソッド)の引数、戻り値には、厳密な型指定ができる[*4]

スクリプト003■マウスポインタに追随するフレームアクション3.0

// MovieClip: マウスポインタに追随するインスタンス
// 第1フレームアクション
import flash.events.Event;   // Eventクラスをimport
var nDeceleration:Number = 0.2;
// イベントリスナーへの登録
addEventListener(Event.ENTER_FRAME, myEnterFrame);   // [*5]
function myEnterFrame(eventObject:Event):void {
  x += mouseX*nDeceleration;
  y += mouseY*nDeceleration;
}

図001■引数の数の不一致を知らせるエラー
ArgumentsError
ただ疑問として、「必要」な引数はひとつ(1)で、その「指定」がない(0)からエラーなのではないだろうか...

[*3] MovieClip._xmouse/MovieClip._ymouseプロパティは、DisplayObject.mouseX/DisplayObject.mouseYプロパティに変わる。

[*4] function(関数)の戻り値がないときActionScript 2.0で使われたVoid型は、ActionScript 3.0では小文字で始まるvoidになるので注意する必要がある。

[*5] Event.ENTER_FRAMEは定数で、文字列"enterFrame"を返す。したがって、EventDispatcher.addEventListener()メソッドの第1引数に、文字列"enterFrame"を直接指定してもよい。

4. ActionScript 2.0クラス定義

ActionScript 2.0クラスは、ActionScriptファイルに定義する。プロパティやメソッドには、厳密な型指定ができる。イベントの扱いは、イベントハンドラメソッドを用いる(一部、リスナーを使う場合もある)。MovieClipシンボルに設定するクラスは、MovieClipクラスを継承(extends)する。

スクリプト004■マウスポインタに追随するActionScript 2.0クラス

// ActionScript 2.0クラス定義ファイル: MyClass.as
class MyClass extends MovieClip {
  var nDeceleration:Number = 0.2;
  function onEnterFrame():Void {
    _x += _xmouse*nDeceleration;
    _y += _ymouse*nDeceleration;
  }
}

クラスは、シンボルの[AS 2.0クラス]に設定できる[*6]

[*6] [ライブラリ]でMovieClipシンボルを選択し、オプションポップアップメニューから[プロパティ]を選ぶ。[シンボルプロパティ]ダイアログボックスの[AS 2.0クラス]にActionScript 2.0クラスを指定する(図002)。

図002■[シンボルプロパティ]ダイアログボックス
Symbol Properties
[AS 2.0クラス]にActionScript 2.0クラスを指定する

5. ActionScript 3.0クラス定義

ActionScript 3.0のクラス定義は、packageの宣言から始まる。クラスはpublic修飾子で指定する。基本的な文法的は、ActionScript 2.0と大きく異なることはない。ActionScript2 2.0と同じく、初期設定はクラスと同名のコンストラクタ関数から行う。

ただし、クラスのデザインが変わっているので、逐次リファレンスを参照する必要がある。MovieClipクラスの完全修飾名は、flash.display.MovieClipとなる。

スクリプト005■マウスポインタに追随するActionScript 3.0クラス

// ActionScript 3.0クラス定義ファイル: MyClass.as
package {
  import flash.display.MovieClip
  import flash.events.Event;
  public class MyClass extends MovieClip {
    var nDeceleration:Number = 0.2;
    // コンストラクタ関数
    function MyClass() {
      addEventListener(Event.ENTER_FRAME, myEnterFrame);
    }
    function myEnterFrame(eventObject:Event):void {
      x += mouseX*nDeceleration;
      y += mouseY*nDeceleration;
    }
  }
}

_____

作成者: 野中文雄
更新日: 2006年7月17日 import指示子にリファレンスへのリンクを設定
作成日: 2006年7月15日
(ドラフト作成: 2006年7月14日)


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