Macromedia Flash非公式テクニカルノート 2. クラスの使用 − シンプルな例
Platform: All 2.1 クラスの使用例 (1) 外部ActionScriptクラスファイルでクラスを定義する (2) クラスファイルを、所定のクラスパスのディレクトリ(Flashがクラスを検索する場所)に保存する (3) クラスのインスタンスを、Flashムービー(FLA)や外部スクリプトファイルなど、他のスクリプトで作成する。または、元のクラスからサブクラスを作成する。 またこの節では、ActionScript 2の新たな機能であるいわゆる「厳密な型指定」(strict data typing)についても解説します。これは、変数や関数の引数、関数の戻り値にデータ型を指定できる機能です。 この節ではもっぱらクラスを扱います。しかし、その大枠のワークフローは、インタフェースを使用する場合も同様です。詳しくは、「5. インタフェースの作成と使用」をご参照ください。 2.2 クラスファイルの作成 注記: 外部ファイル中のActionScriptのコードは、FLAファイルのパブリッシュや書き出し、ムービープレビュー、デバッグする際に、SWFファイルにコンパイルされます。したがって、外部ファイルに変更を加えたときは、そのファイルを保存して、コードを使用しているFLAファイルはすべてもう1度コンパイルしなければなりません。 以下のステップでは、Personというクラスを作成します。このクラスには、2つのプロパティ(ageとname)があり、またこれらの値を[出力]パネルに表示するメソッド(showInfo())をひとつもっています。 クラスファイルを作成する (2) 以下のいずれかを実行します。 (3) ファイルにPerson.asという名前をつけて、PersonFilesフォルダに保存します。 (4) スクリプトウィンドウで、以下のコードを入力します。 class Person { これを、クラス「宣言」(declaration)といいます。もっとも基本的な形式では、クラス宣言には'class'キーワードがあり、続けてクラス名(この場合はPerson)を書きます。そして、その後にひと組の中括弧('{}')を記述します。中括弧の中身をクラス本文(class body)といいます。ここに、クラスのプロパティやメソッドを定義します。 注記: クラス名(Person)は、定義を書いたASファイルの名前(Person.as)と一致しなければなりません。これは、とても重要な点です。2つの名前が一致しないと、クラスはコンパイルされません。 (5) プロパティをPersonクラスに作成するには、'var'キーワードを使用して、2つの変数名ageとnameを以下のように定義します。 class Person { Tip: 慣習としてクラスのプロパティは、クラス本文の冒頭に定義します。これは、コードをわかりやすくするためです。必須の条件ではありません。 変数の宣言に使用されているコロンシンタックス(var age:Numberおよびvar name:String)にご注目ください。これはデータの厳密な型指定(data typing)の例です。変数をこの方法(var variableName:variableType)で型指定すると、ActionScript 2.0コンパイラはその変数に設定される値が指定した型に合致するかどうかを確認します。このシンタックスは、必ずしも使用しなければならないものではありません。しかし、実践する価値があり、スクリプトのデバッグもしやすくなります(詳しくは、オンラインヘルプの「厳密な型指定」をご参照ください)。
(6)つぎに、showInfo()メソッドを作成しましょう。このメソッドは、決められたフォーマットで、ageとnameプロパティの値を内容とするストリングを返します。showInfo()関数の定義を、以下のようにクラス本文に追加します。 class Person { 関数の定義に、データ型指定(任意ですが推奨されます)が用いられていることにご注目ください。 function showInfo():String {...} この場合に型指定されているのは、showInfo()関数の戻り値(ストリング)です。 (7) この節で最後に追加するコードは、「コンストラクタ関数」(constructor function)という特別な関数です。オブジェクト指向プログラミングでは、コンストラクタ関数はクラスの新たなインスタンスを初期化します。 コンストラクタ関数は、つねにクラスと同じ名前にします。クラスのコンストラクタ関数を作成するには、以下のコードを加えます。 class Person { コンストラクタ関数Person()は、2つの引数、myNameとmyAgeを取ります。そして、これらの引数を、それぞれnameとageプロパティに設定します。関数の2つの引数は、それぞれStringとNumberに厳密に型指定されています。コンストラクタ関数について、詳しくは「3.5 コンストラクタ関数」をご参照ください。 注記: コンストラクタ関数を作成しないと、空の関数がコンパイル時に自動的に作成されます。 (8) ファイルをPerson.asとして、(1)で作成したPersonFilesフォルダに保存します。 (Flash Professionalでなく)Flash MX 2004をお使いの場合は、次節「2.3 Personクラスのインスタンスを作成する」をご覧ください。 (9) (Flash Professionalのみ)クラスファイルのシンタックスをチェックします。[ツール] > [シンタックス]を選択するか、キーボードから[Ctrl]+T(Windows)または[command]+T(Macintosh)を押します。 もしエラーが[出力]パネルに表示されたら、入力したスクリプトのコードと上記(7)の最終的なコードとを比較します。コードのエラーが解決できないときは、[Help]パネルから(7)のコードすべてをコピーしてください。 2.3 Personクラスのインスタンスを作成する
たとえば、以下のコードは、Personクラスのインスタンスを作成し、それを変数newPeronに設定します。 var newPerson:Person = new Person("Nate", 32); このコードはPersonクラスのコンストラクタ関数を呼出し、引数として"Nate"と32という値を渡しています。 変数newPersonが、Personオブジェクトとして型指定されています。オブジェクトをこのように型指定すると、コンパイラはこのクラスに定義されていないプロパティやメソッドにアクセスしていないかどうか確認することができます(例外として、'dynamic'キーワードを使ってクラスを動的と宣言した場合があります。詳しくは、「10. ダイナミックなクラスの作成」をご参照ください)。 FlashムービーでPersonクラスのインスタンスを作成する (2) ファイルにcreatePerson.flaという名前をつけて、すでに作成してあるPersonFilesフォルダに保存します。 (3) タイムラインのレイヤー 1を選択して、[アクション]パネルを開きます([ウィンドウ] > [開発パネル] > [アクション])。 (4) [アクション]パネルに、以下のコードを入力します。 var person_1:Person = new
Person("Nate", 32); 上記のコードは、Personクラスのインスタンスを、person_1とperson_2の2つ作成しています。そして、それぞれのインスタンスに対してshowInfo()メソッドを呼出しています。 (5) ファイルを保存したら、[制御] > [ムービープレビュー]を選択します。[出力]パネルには、つぎのように表示されます。 Hello, my name is Nate and
I'm 32 years old. コンストラクタ関数を呼出してクラスのインスタンスを作成するとき、Flashはコンストラクタと同じ名前のActionScriptファイルを予め決められた一連のフォルダの場所から探し出します。この一連のフォルダの場所は、まとめてクラスパス(classpath)と呼ばれます(詳しくは、「6. クラスパスの考え方」をご参照ください)。 これで、Flashムービーでクラスをどのように作成・使用するかの大まかな考え方が理解できたでしょう。以降のこの章では、クラスやインタフェースについてさらに詳しく解説します。 出典 _____ 作成者: 野中文雄 Copyright © 2001-2003 Fumio Nonaka. All rights reserved. |
|||||