Now Writing...(鋭意執筆中) |
||||||||||||||||||||||||||||||||||||||||||
■Mailing List: ActionScript 3.0 F-siteセミナー 3 stepで始めるAS3のスクリプト
ActionScript 3.0は以前のバージョンと比べて、書くのが面倒になったといわれる。しかし、それはビジネスレターに、もって回った形式や作法があるのに似ている。一見わずらわしく思えても、その作法にしたがいさえすれば、案内状でも礼状でも注文書でも、型どおりの書き方で作成できる。今回はActionScript 3.0の中でも、もっとも基本的な型を3つ紹介する。 1. インスタンスをつくって表示する 基本その1●インスタンスをつくる インスタンスをつくっても、まだメモリ上の存在なので、ステージには表示されない。表示するには、タイムラインの子として表示階層(表示リスト)に加える必要がある。使う命令(メソッド)は、addChild()だ。パラメータ(引数)には、表示したいインスタンスを指定する。 基本その2●インスタンスをタイムラインに表示する たとえば、[テキストツール]を使って、テキストフィールドをステージに配置し、テキストを入力するという操作(図001)を、ActionScript 3.0で処理してみよう。フレームに記述するスクリプト(フレームアクション)は、以下のとおりだ(スクリプト01・図002)。 図001■TextFieldインスタンスを配置してテキストの設定
テキストフィールドをつくったり操作するためのクラスはTextFieldだ。インスタンスは前述のとおりnew演算子で作成し、addChild()メソッドを使ってタイムラインに表示する。テキストを設定するには、textプロパティにテキストを代入する。スクリプトの動作を確かめるには、[制御]メニューから[ムービープレビュー](ショートカット[command]+[return]または[Ctrl]+[Enter])を実行する(図002)。 図002■フレームアクションを[ムービープレビュー]で確かめる
2. [ライブラリ]からインスタンスをつくる 図003■[ライブラリ]のシンボルに[リンケージプロパティ]ダイアログボックスで[クラス]を設定 ひとたび[クラス]が設定できてしまえば、インスタンスをつくってステージに表示する方法は、TextFieldの場合と同じだ。つまり、new演算子でインスタンスをつくり、addChild()メソッドによりタイムラインに加えればよい(スクリプト02)。 スクリプト02■MovieClipシンボルからインスタンスをタイムラインに配置(02_MovieClipSymbol.fla)
[リンケージプロパティ]ダイアログボックスで[クラス]を設定した場合、データ型の指定には[基本クラス]のフィールドにデフォルトで記載されているクラスを使う。なお、インスタンスの水平および垂直座標のプロパティは、xとyである。[ムービープレビュー]を確かめると、インスタンスがタイムラインの指定座標に配置される(図004)。 図004■インスタンスがタイムラインの指定座標に配置される [ライブラリ]のサウンドを再生するのは、もっと簡単だ。サウンドは、ステージに表示しないからである。したがって、addChild()メソッドは使わない。[リンケージプロパティ]ダイアログボックスで[クラス]を設定するのは、MovieClipシンボルの場合と同じだ(図005)。 図005■[ライブラリ]のサウンドに[リンケージプロパティ]ダイアログボックスで[クラス]を設定 サウンドのインスタンスはnew演算子でつくる。そのインスタンスに対してplay()メソッドを呼出せば、サウンドが再生される(スクリプト03)。[ムービープレビュー]で確かめよう。 スクリプト03■[ライブラリ]のサウンドを再生(03_Sound.fla)
[ライブラリ]のビットマップをステージに表示するには、MovieClipシンボルの場合よりひと手間加わる。というのは、ビットマップのインスタンスは、addChild()のパラメータに指定できる資格がないからだ。そのため、その資格のあるBitmapインスタンスという容れ物に入れたうえで、タイムラインに配置しなければならない。まず、[リンケージプロパティ]ダイアログボックスで[クラス]を設定したうえで、インスタンスをnew演算子でつくるのは、毎度のとおりだ(図006)。 図006■[ライブラリ]のビットマップに[リンケージプロパティ]ダイアログボックスで[クラス]を設定 Bitmapインスタンスも、原則どおりnew演算子でつくる。ただし、その中に入れるビットマップのインスタンスを、パラメータとしてコンストラクタの括弧()内に指定する。そして、そのBitmapインスタンスを、addChild()メソッドでタイムラインに配置すればよい(スクリプト04)。 new Bitmap(ビットマップのインスタンス)スクリプト04■[ライブラリ]のビットマップをタイムラインに配置(04_Bitmap)
[ライプラリ]で[クラス]を設定したビットマップのインスタンスを作成するとき、ふたつの数値がパラメータとして必要とされる[*3]。この値はともに0でよい。[ムービープレビュー]を実行すると、ビットマップがタイムラインに表示される(図007)。なお、「ビットマップをダイナミックに配置する」も、併せて参照してほしい。 図007■ビットマップがタイムラインの指定座標に配置される ここまで、ActionScript 3.0では、new演算子とクラスのコンストラクタによりインスタンスを作成し、(必要があれば)addChild()メソッドでタイムラインに配置するというふたつの基本を確認した。では、ActionScript 2.0ではどうだったのか、ポイントとなる命令文(ステートメント)を比較してみよう(表001)。 表001■ActionScript 3.0と2.0の処理の違い
ActionScript 2.0は、3.0と比べて一般にステートメント数は少ない傾向があるものの、その分パラメータは煩雑になりがちだ。しかも、呼出すメソッド名とそのターゲットには、はっきりとした決まりがない。
3. 外部ファイルをロードする 図008■外部ファイルをFlashムービーにロードする 第1に、[ライブラリ]のサウンドではないので、クラスを設定する必要はない。クラスは、ActionScript 3.0に定義済みのSoundを使う。 第2に、外部MP3ファイルをロードするには、Soundインスタンスをターゲットとしてload()メソッドを呼出す。このとき、パラメータには、MP3ファイルのURLを指定する[*4]。URLは単なるテキストだが、このURLもnew演算子でインスタンスにしなければならない。クラスはURLRequestで、URLのテキストをパラメータにする(スクリプト05)。 new URLRequest(URLのテキスト)スクリプト05■外部MP3サウンドファイルをストリーミング再生する(05_LoadingSound.fla)
外部JPEGファイル(前掲図008参照)をロードして、タイムラインに配置するというのも、基本的にMP3ファイルの再生と同じ処理の流れだ。ただし、ふたつ注意すべき点がある。第1に、JPEGファイルをロードするインスタンスは、Loaderクラスで作成する。第2に、インスタンスをタイムラインに表示するには、addChild()メソッドを呼出す必要がある。 外部JPEGファイルをロードするメソッドはload()で、パラメータにはURLを指定したURLRequestインスタンスをつくる、といった点はMP3ファイルの再生と同じである(スクリプト06)。 スクリプト06■外部JPEGファィルをロードする(06_Loader.fla)
Loaderクラスを使うということ以外は、MovieClipシンボルのインスタンス配置と、外部MP3ファイルのロードについての知識を組合わせれば、理解できるスクリプトだろう。[ムービープレビュー]を実行すると、外部JPEGファイルがタイムラインの指定座標に配置される(図009)。 図009■MovieClipシンボル内にはふたつのMovieClipインスタンスを配置
4. イベントを待受けて処理する var myLoader:URLLoader = new URLLoader(); 確かに、これで外部テキストファィルのロードはできる。しかし、このままでは、タイムラインに表示されない。そして、URLLoaderインスタンスは、addChild()メソッドのパラメータとしての資格がないだけでなく、表示そのものができないのだ。 したがって、タイムラインに表示するには、そのためのTextFieldインスタンスを別途配置し、URLLoaderインスタンスにロードしたテキストをTextFieldのtextプロパティに設定する必要がある。URLLoaderインスタンスに読込まれたテキストは、dataプロパティで取出せる。では、フレームアクションをつぎのように直せばよいだろうか。 var _txt:TextField = new TextField(); [ムービープレビュー]で試すと、エラーが出る(図010)。これは、URLLoaderインスタンスのdataプロパティに、まだテキストが読込まれていないためだ。電話で相手の番号をプッシュし終わったからといって、いきなり話し始めても相手には通じない。呼出し音が止まり、相手が出たのを確かめて、話す必要がある。 図010■URLLoaderインスタンスのdataプロパティをTextFieldに設定するとエラー URLLoaderインスタンスについても、外部テキストファイルがロードし終えるまで、TextFieldインスタンスへのテキストの設定は待たなければならない。データのロードの完了とか、ユーザーがボタンをクリックしたとか、処理の要となるタイミングのことを「イベント」という。ActionScript 3.0では、イベントには関数を登録して処理する。イベントをいわば待受ける関数は、リスナー関数とも呼ばれる。イベントの待受けは、つぎのように行う。 基本その3●イベントを待受けて処理する 外部テキストファイルのロードの完了というイベントを待受けるためには、以下のスクリプト07のように、リスナー関数をURLLoaderインスタンスに登録する。addEventListener()メソッドにパラメータとして指定するロード完了のイベントは、[ヘルプ]で調べればEvent.COMPLETEだとわかる。関数名は、変数やクラスの名前と同じく、半角英数字で任意に決めてよい。 関数は一般にfunctionキーワードで定義し、関数名に続けて括弧()を記述する。括弧()内はパラメータを指定する場合もあれば、しないこともある。リスナー関数には、パラメータをひとつ設定する必要がある[*5]。コロン(:)に続けて指定するデータ型(Event)は、addEventListener()メソッドのパラメータに指定したイベント(Event.COMPLETE)のクラスと一致させる。 スクリプト07■外部テキストファイルをロードしてタイムラインに配置(07_LoadingText.fla)
これで、URLLoaderインスタンスに外部テキストファイルがロードし終わると、そのイベントEvent.COMPLETEに登録したリスナー関数が呼出され、関数内に定義した処理が行われる。つまり、読込んだ外部ファイルのテキストが、タイムラインに配置したTextFieldインスタンスのtextプロパティに設定される(図011)。 図011■URLLoaderインスタンスにロードされた外部ファィルのテキストとがTextFieldに設定
作成者: 野中文雄 Copyright © 2001-2008 Fumio Nonaka. All rights reserved. |
||||||||||||||||||||||||||||||||||||||||||