12 September 2005
ページ ツール |
FlashおよびFlashワークスペースについての基礎知識が必要です。Flashを初めて使用する場合は、「Getting Started Learning Guide」を参照してください。
初級
メモ:この習得ガイドでは、FlashのActionScriptについて紹介し、ユーザのスキルアップのためのツールを提供します。取り上げる素材の多くは、Flashドキュメンテーションに含まれるものです。新しい機能の使用方法を学ぶ際には、最初にFlashヘルプまたはLiveDocsを必ず参照してください。
ActionScriptはFlashで使用されているスクリプト言語です。ActionScriptを使用すると、インタラクティブなFlashコンテンツを作成できます。また、単純なアニメーションの作成から、豊富なデータを含む複雑でインタラクティブなアプリケーションインタフェイスの設計に至る、Flashでのさまざまな作業を効率的に行うことができます。Flashのスクリプト言語であるActionScriptは、数多くのリリースを経て徐々に進化してきました。ActionScriptには、ActionScript 1.0とActionScript 2.0の2つのバージョンがあります。
ActionScript 1.0はActionScriptの簡易バージョンです。ほとんどの一般的なニーズやFlash Playerの旧バージョンへの対応にご利用いただけます。ユーザがボタンをクリックしたときに単純なインタラクティブ操作を行う場合、またはモバイルデバイス用のアプリケーションを作成する場合は、ActionScript 1.0を使用します。しかし、もっと複雑なコードを作成する場合は、ActionScript 2.0の方が適しています。
ActionScript 2.0は、完全なクラス継承と開発者が高機能言語に求めるすべての機能をサポートしているオブジェクト指向プログラミング言語です。より柔軟性のあるプログラミング環境とより高いデバッグ能力を提供します。ActionScript 2.0は、慣れ親しんだ本格的なオブジェクト指向プログラミング(OOP)手法を用いており、クラス、継承、インタフェイスなどのOOPの一般的な概念をすべてサポートしています。また、ActionScript 2.0は、変数のデータ型の指定、関数パラメータと戻り値の型、包括的なデバッグ情報など、ActionScriptプログラミングを拡張する機能も備えています。開発者にとっては、プログラミング構造の改善と、コーディングおよび維持にかかる時間を短縮できる利点もあります。堅牢な機能を持つ本格的なプログラミング言語を使用したコードを作成するには、ActionScript 2.0を使用します。
ActionScript 2.0がプロジェクトに適しているかどうか、ActionScript 1.0の方が簡単で手早いソリューションかどうかを判断するには、次のリソースを参照してください。それによって、この重要な決定を下し、それぞれのプロジェクトを最も効率的に進めることができます。
このガイドでは、ActionScript 2.0およびオブジェクト指向プログラミングの基本概念の一部を紹介します。この後のセクションでは、一般的な用語について説明し、Flashアプリケーションの構成方法、FlashのActionScript言語およびスクリプティングの学習方法、さらなる情報や例を見つけることができる場所を示します。
ここでもまた、ActionScript言語を初めて使用する場合は、ActionScriptへの導入として、Flash LiveDocsの『ActionScript 2.0の学習』マニュアルの「シンタックスと言語の基礎」を参照してください。ActionScriptの使用経験があり、ActionScript 2.0を使ったクラスの作成を始めたい場合は、同じマニュアルの「クラス」に掲載されている「カスタムクラスの記述」の例を参照してください。
ActionScriptコードやシンタックスの記述に不安がある場合、アクションパネル(ウィンドウ/アクション)のスクリプトアシストモードを使用してみることもできます。スクリプトアシストは、スクリプトを作成する際に便利なツールです。スクリプトを作成するには、アクションパネルで選択を行い、テキストフィールドに入力してスクリプトペインでステートメントを自動的に作成します。スクリプトアシストは通常大きなアプリケーションには使用しませんが、Flashアプリケーションへのインタラクティブ操作の追加、プロトタイプのモックアップなどに非常に便利です。
スクリプトアシストを使用すると、アクションツールボックス(アクションパネルの左側にあるリスト)から項目を選択してスクリプトを作成できます。追加(+)ポップアップメニューからアクションを選択することもできます。アクションツールボックスでは、項目がアクション、プロパティ、オブジェクトなどのカテゴリに区分されており、すべての項目をアルファベット順にリストするインデックスカテゴリも用意されています。項目を一度クリックすると、パネルの右上にその説明が表示されます。項目をダブルクリックすると、スクリプトペインのパネルの右側にあるスクロールリストにその項目が追加されます。
スクリプトアシストモードでは、スクリプトペインでのステートメントの追加、削除または順序の変更を行うことができます。スクリプトペインの上にあるテキストボックスにアクションのパラメータを入力することもできます。スクリプトアシストモードでは、アクションパネルの標準機能を使用することもできます。例えば、テキストの検索と置換、スクリプトの行番号の表示、スクリプトの固定(オブジェクトやフレームからクリックするだけでスクリプトをスクリプトペインに保持)などを行うことができます。
アクションをFlashドキュメントに追加するには、ボタンやムービークリップまたはタイムラインのフレームに関連付ける必要があります。アクションパネルでは、アクションの選択、ドラッグ&ドロップ、再配置および削除を行うことができます。
メモ:「スクリプトアシスト」ボタンのクリック時にアクションパネルにActionScriptコードがある場合、既存のコードが検証されます。コードにエラーがある場合、現在のコードの選択範囲を修正(またはコメントアウト)しない限り、スクリプトアシストを使用できません。スクリプトの削除と操作について詳しくは、Flash LiveDocsでFlashユーザーガイド/スクリプトアシストを使用したActionScriptの記述/スクリプトアシストを使用したActionScriptの記述のセクションを参照してください。
スクリプトアシストを有効にすると、アクションパネルのユーザインタフェイスとビヘイビアが次のように変更されます。
スクリプトアシストによるスクリプトの追加、削除および操作について詳しくは、Flash LiveDocsでFlashユーザーガイド/スクリプトアシストを使用したActionScriptの記述/スクリプトアシストを使用したActionScriptの記述のセクションを参照してください。
Flashドキュメンテーション(FlashヘルプとLiveDocsの両方)には、スクリプトアシストの使用方法を説明する演習例が用意されています。Script Assistによるスクリプトの記述例については、Flashユーザーガイド/スクリプトアシストを使用したActionScriptの記述/スクリプトアシストを使用した startDrag/stopDrag イベントの作成を参照してください。スクリプトアシストを使用した小さなアプリケーションの作成方法を示すチュートリアルについては、Flashチュートリアル/ActionScript:スクリプトアシストモードの使用を参照してください。
ActionScript 2.0には、クラス、継承、インタフェイスなど、いくつかのプログラミングキーワードや概念が導入されています。これらの概念は、一般的にはオブジェクト指向プログラミングと呼ばれるものから構成されています。詳しくは、Flash LiveDocsの次のセクションを参照してください。
ActionScript 2.0には次の機能があります。
userNameという名前の変数を宣言しています。var userName:String = “Fred”;
ActionScript 2.0を使用する場合、FLAファイルのパブリッシュ設定でActionScript 2.0を指定してください。これはFlash 8で作成されるファイルの初期設定となっています。ただし、ActionScript 1.0を使用する古いFLAファイルを開き、ActionScript 2.0で書き換える場合は、FLAファイルのパブリッシュ設定をActionScript 2.0に変更します。変更しない場合、FLAファイルのコンパイルが正しく行われず、エラーが生成されません。
ActionScriptで作成するクラスは、別のActionScript(AS)ファイルに格納する必要があります。タイムライン上のフレーム(フレームスクリプト)でクラスを作成したり、ムービークリップやボタンインスタンスに関連付けたりすることはできません。クラスファイルに関する重要ないくつかのポイントを次に示します。
クラスとオブジェクト指向プログラミングについて詳しくは、このガイドの「Object-Oriented Programming」セクションを参照してください。クラスの作成とオブジェクト指向プログラミングに不慣れな場合は、Flash LiveDocsのActionScript 2.0の学習/クラス/例 : カスタムクラスの記述のセクションの手順を試してみてください。
詳しくは、Flash LiveDocsの次のセクションを参照してください。
Flashで新しいドキュメンテーションまたはアプリケーションを開始する場合、関連するファイルの編成方法を決定する必要があります。複雑なアプリケーションの作成時など、一部のプロジェクトではクラスを使用することもあります。ただし、すべてのドキュメントでクラスを使用するわけではありません。例えば、Flashのドキュメントにある多数の短い例では、クラスを使用していません。
小さなアプリケーションや簡単なFLAファイルでは、クラスを使用して機能を格納することが最も簡単または最適なソリューションとは言えません。小さなプロジェクトを作成する場合、クラスや外部コードファイルを使用してActionScriptを構成すると、FLAファイル内にActionScriptを追加するより大変な作業量や労力になることがよくあります。ActionScriptをドキュメント内に配置する方がたいてい効率的です。この場合、タイムライン上のすべてのコードをできる限り少ないフレームに配置し、コードをFLAファイルのインスタンス(ボタンやムービークリップなど)に配置しないようにしてください。
すべてのActionScriptコードを、読み込むクラス内に配置しないで、FLAファイル内に保持する場合、必ずしもActionScript 1.0を使用する必要はありません。コードをFLAドキュメント内に配置した上で、厳密なデータ型指定機能や新しいメソッドとプロパティを持つActionScript 2.0を使用することもできます。ActionScript 2.0には、他のプログラミング言語の標準に従うシンタックスも用意されています。これにより、この言語の学習がより簡単で価値のあるものになります。例えば、構造とシンタックスの規格が同じ別の言語を使用したことがある場合、ActionScriptに違和感を感じません。または、その知識を将来学習する他の言語に適用することもできます。ActionScript 2.0では、言語エレメントの追加セットを使用することで、アプリケーション開発にオブジェクト指向のアプローチを採用できます。これはアプリケーション開発にとって有利です。
場合によっては、使用するActionScriptのバージョンを選択できないこともあります。モバイルデバイスアプリケーションなど、古いバージョンのFlash PlayerをターゲットとするSWFファイルを作成する場合、多くのデバイスでFlash Playerと互換性がある、ActionScript 1.0を使用する必要があります。
ActionScriptのバージョンに関わらず、その場に応じた手法に従う必要があります。大文字と小文字の区別における一貫性の確保、コード補完機能の使用、読みやすさの強化、インスタンス名でのキーワード使用の防止、一貫した命名規則の維持など、多くのプラクティスはどちらのバージョンにも適用されます。アプリケーションを将来のFlashのバージョンで更新するか、より大きく複雑にする予定がある場合は、ActionScript 2.0、クラスおよびバージョンコントロールを使用して、アプリケーションの更新と変更をしやすくしておく必要があります。クラスファイルについて詳しくは、「オブジェクト指向プログラミング」セクションを参照してください。
ActionScript 1.0コードからActionScript 2.0コードへの更新で最初に理解しておく必要があることは、ほとんどの場合において、更新が不要であるということです。以前のバージョンのFlashで作成したActionScriptは、Flash 8とFlash Player 8でもそのまま動作します。
コードをActionScript 1.0からActionScript 2.0に移行すると役に立つのは、主に次の場合です。
また、ActionScript 2.0やV2コンポーネントの利点や機能の一部を活用するために、クラスファイルを記述する必要がないことも覚えておいてください。タイムライン上のフレームスクリプトを使用しても、ActionScript 2.0コード(データ型の注釈を変数に適用するコードなど)を記述できます。
ActionScriptとFlash Playerの新規バージョンはよく同時にリリースされますが、常に同義とは言えません。Flash PlayerとActionScriptのバージョンには、Flashアプリケーションの作成時点を理解する上で非常に重要な区別があります。
ActionScript 1.0またはActionScript 2.0を使用して、FlashドキュメントをFlash Player 6、7または8を対象にコンパイルでき、そのドキュメントは正しく動作します。その理由は、ActionScript 1.0とActionScript 2.0のどちらも同じバイトコード(Flash PlayerのActionScriptインタープリタで読み込まれるコード)にコンパイルされるからです。ただし、Flash Playerのそれぞれの新規バージョンには、新しいActionScript API(関数、クラス、プロパティおよびメソッド)が導入されています。例えば、MovieClipクラスのloadMovie メソッドは、Flash Player 6、7および8で動作しますが、MovieClipLoaderクラスはFlash Player 7と8でしか動作しません。つまり、これらPlayerのいずれのバージョンにもActionScript 1.0またはActionScript 2.0を使用できますが、使用するAPIがターゲットのPlayerのバージョンでサポートされていることを確認する必要があります。
ActionScript 1.0とActionScript 2.0のいずれも大文字と小文字を区別しません。ただし、Flash Player 7とFlash Player 8には、大文字と小文字の区別があります。つまり、ActionScript 1.0または2.0のいずれを使用しているかに無関係に、変数userNameとUserNameは、Flash Player 6では同一の変数として扱われ、Flash Players 7と8では別の変数として扱われます。
データとは、Flash内で操作できる数値、ストリングやその他の情報を指します。アプリケーションやWebサイトの作成時に、データの使用は通常欠かせません。高度なグラフィックやスクリプトで生成したアニメーションの作成時にも、データを使用しますが、エフェクトの駆動に使用する値を操作する必要があります。
Flash内の変数でデータを定義したり、XML、Webサービスなどを使用して外部ファイルやサイトからデータをロードしたりできます。データをデータベースに格納してから、その情報をいくつかの方法でSWFファイルで表現することもできます。その中には、テキストフィールドやコンポーネントでの情報の表示、ムービークリップインスタンスでのイメージの表示などがあります。
データの種類で最も一般的なものとしては、ストリング(名前やテキストの一節など、一連の文字)、数値、オブジェクト(ムービークリップなど)、ブール値(trueとfalse)などがあります。
データ型とは、1つのデータおよびその上で実行できる操作の種類を示すものです。データは変数(後述の「変数」セクションを参照)に格納します。データ型は、変数、オブジェクトインスタンスおよび関数定義の作成時に使用して、作業するデータの型を割り当てます。ActionScriptの記述時には、多数の異なるデータ型を使用します。
データ型を使用して各種のデータを分類すると、データの使用方法を知ることができます。例えば、数値データでは演算を実行できますが、数値を回転しても無意味です。一方、ムービークリップは回転できますが、ムービークリップを別のムービークリップで乗算しても無意味です。
ActionScript 2.0では、変数のデータ型、パラメータおよび関数の戻り値の型を正式に指定し、そのコンテキストで使用できるデータの分類をFlashに通知できます。例えば、ある変数をストリングデータ型として宣言すると、その変数にストリングのみ割り当てることができます。この変数に数値を割り当てようとすると、Flashではコンパイラエラーが表示されます。
ActionScriptのデータ型には、プリミティブ型と複合型の2つの基本的な分類があります。
プリミティブデータ型を含む変数の動作は、状況によっては、複合型を含む変数の動作と異なることがあります。詳しくは、Flash LiveDocsの次のセクションを参照してください。
すべてのデータ型とクラスの定義については、Flash LiveDocsの『ActionScript 2.0リファレンスガイド』を参照してください。
変数は情報を保持するコンテナです。次のActionScriptは、ActionScriptでの変数の表記方法を示しています。
var myVariable:Number = 10;
この変数は数値を保持します。前述のコードでは、:Numberを使用して、変数が保持する値のタイプを割り当てています。これはデータ型指定と呼ばれます。データ型指定について詳しくは、後述の「データ型の割り当て」を参照してください。
コンテナ(変数名で表される)は、ActionScriptを通じて常に同一ですが、その内容(値)は変わる可能性があります。スクリプト内の変数の値は、必要に応じて何回でも変更できます。SWFファイルの再生中に変数の値を変更すると、ユーザが行った操作に関する情報の記録と保存、SWFファイルの再生中に変わる値の記録または条件がtrueかfalseかの評価を行うことができます。Flashゲームでプレーヤーの得点が変わる際など、SWFファイルの再生中に変数を絶えず更新する必要があります。SWFファイルにユーザのインタラクションを作成し処理する場合、変数は欠かせません。
変数にはさまざまなデータ型を保持できます。詳しくは、LiveDocsの「データ型について」(ActionScript 2.0の学習/データおよびデータ型/データ型について)を参照してください。変数が格納するデータ型は、スクリプトで変数値を割り当てるときに、その値の変わり方に影響します。
変数に格納できる一般的な情報の種類としては、URL(String型)、ユーザ名(String型)、演算結果(Number型)、イベントの発生回数(Number型)、特定のボタンをユーザがクリックしたかどうか(Boolean型)などが挙げられます。各SWFファイルとオブジェクトインスタンス(ムービークリップなど)には変数のセットがあり、それぞれの変数には、他のSWFファイルやムービークリップ内の変数と独立した値が設定されています。
変数の値を表示するには、trace()ステートメントを使用して値を出力パネルに送信します。テスト環境でSWFファイルをテスト時に、値が出力パネルに表示されます。例えば、trace(hoursWorked)と指定すると、テスト環境で変数hoursWorkedの値が出力パネルに送信されます。変数の値は、テスト環境のデバッガでも確認し設定できます。
変数について詳しくは、Flashドキュメントの『ActionScript 2.0の学習』の「変数について」セクションの次のトピックを参照してください(FlashのヘルプおよびFlash LiveDocsのActionScript 2.0の学習/データおよびデータ型/変数についてで利用できます)。
変数の作成時に、変数のオブジェクト型を明示的に宣言できます。これは厳密な型指定と呼ばれます。項目を数値、ストリングまたは別のデータ型を保持するものとして明示的に定義しない場合、Flash Playerでは、割り当て時(実行時)に項目のデータ型を判別しようとします。厳密な型指定とその例については、Flashドキュメントの『ActionScript 2.0の学習』の「データ型について」セクションの次のトピックを参照してください(FlashのヘルプおよびFlash LiveDocsのActionScript 2.0の学習/データおよびデータ型/データ型についてで利用できます)。
ActionScriptのシンタックスとステートメントの学習は、単語を組み合わせて文章を作成し、それらの文章をまとめて段落にする方法を学習するのと似ています。ActionScriptでも同様にシンプルにできます。例えば、英語の場合、ピリオドで文章を終了します。ActionScriptでは、セミコロンでステートメントを終了します。ActionScript言語では、ムービークリップインスタンスまたはSWFファイルの再生ヘッドのループを停止するために、stop()アクションを入力できます。または、数千行のコードを記述して、インタラクティブなバンキングアプリケーションを動作させることもできます。ActionScriptでは、非常に単純な操作や非常に複雑な操作を行うことができます。
「データの理解」セクションでは、ActionScript言語でのデータの使用方法およびシンタックスのフォーマット方法について学習しました。このセクションでは、シンタックスを使用したActionScriptでのステートメントの作成方法について説明します。ここでは、基本的な言語概念を説明する多くの短いコードやいくつかの例を取り上げます。以降のセクションでは、この章で学習する基本概念を組み合わせて発展させた、もっと長く入り組んだコード例を示します。
このセクションで説明する全般的な規則は、すべてのActionScriptに適用されます。ActionScriptのほとんどの用語にも個別の要件があります。特定の用語の規則については、Flash LiveDocsの『ActionScript 2.0の学習』の「用語」セクションまたは『ActionScript 2.0リファレンスガイド』の個々のエントリを参照してください(Flashドキュメントに含まれている『ActionScript 2.0リファレンスガイド』は、ActionScriptを使用する開発者の中心的なリファレンスまたは辞書です)。ActionScriptの基本機能を適用して洗練されたプログラムを作成することは、ActionScriptの初心者にとって骨の折れることです。このセクションで説明する規則の適用方法について詳しくは、「ActionScript 2.0 のベストプラクティスとコーディング規則」(ActionScript 2.0の学習/ActionScript 2.0 のベストプラクティスとコーディング規則)を参照してください。
ActionScript言語は、ActionScript言語を構成するビルトインクラスから構成されています。正しいActionScriptシンタックスを使用してステートメントを作成し、コードがFlash内で正しくコンパイルされ実行される必要があります。この場合、シンタックスでは、プログラミングに使用する言語の文法とスペリングを参照します。コンパイラは不正なシンタックスを理解できないため、テスト環境でドキュメントをテストすると、出力パネルにエラーや警告が表示されます。このため、シンタックスは、ActionScriptの正しい作成を支援する規則とガイドラインの集まりとなります。
ステートメントとは、特定のアクションの実行など何らかの操作を実行するためにFLAファイルに与える命令です。例えば、条件式を使用すると、何らかの項目がtrueか、または存在するかを判別できます。その後条件がtrueかどうかに基づいて、関数や式などの指定したアクションを実行できます。ifステートメントは条件式で、条件を評価してコードで実行する次のアクションを決定します。
// ifステートメント
if (condition) {
// ステートメント;
}
式は、ステートメントとは異なり、値を表すActionScript記号を適正に組み合わせたものです。式には値があり、値とプロパティには型があります。式は、演算子とオペランド、値、関数およびプロシージャで構成できます。式は、優先し関連するActionScriptの規則に従います。通常、Flash Playerは式を解釈して、アプリケーションで使用可能な値を返します。例えば、次のコードは式です。
x + 2
前述の式のxと2はオペランドであり、+は演算子です。演算子とオペランドについて詳しくは、Flash LiveDocsのActionScript 2.0の学習/シンタックスと言語の基礎/演算子についてのセクションを参照してください。演算子とオペランドについて詳しくは、Flash LiveDocsのActionScript 2.0の学習/データおよびデータ型/データ型についてのセクションを参照してください。
ActionScriptのフォーマット方法によって、コードの保守可能性も決まります。例えば、インデントやコメントを含まないFLAファイルまたは一貫性のないフォーマット規則や命名規則を含むFLAファイルのロジックは、読みにくくなります。ActionScriptのブロック(ループやifステートメントなど)にインデントを設定すると、問題が発生した場合に、コードが読みやすくデバッグしやすくなります。ActionScriptのフォーマットについて詳しくは、Flash LiveDocsのActionScript 2.0の学習/ActionScript 2.0 のベストプラクティスとコーディング規則/ActionScriptシンタックスのフォーマットのセクションを参照してください。
ActionScriptでは、ステージ上のオブジェクトやインスタンスに属するプロパティやメソッドにアクセスするために、ドット(.)演算子(ドットシンタックス)を使用します。ドット演算子を使用すると、インスタンス(ムービークリップなど)、変数、関数またはオブジェクトへのターゲットパスを特定することもできます。ドットシンタックス式は、オブジェクト名またはムービークリップ名で始まり、次にドットが続き、指定するエレメントで終了します。次のセクションでは、ドットシンタックス式の記述方法について説明します。
ムービークリップ、ロードしたムービーまたはボタンを制御するには、ターゲットパスを指定する必要があります。ターゲットパスとは、SWFファイル内のムービークリップインスタンス名、変数およびオブジェクトの階層アドレスです。ムービークリップまたはボタンのターゲットパスを指定するには、ムービークリップやボタンにインスタンス名を割り当てる必要があります。ムービークリップインスタンスに名前を付けるには、インスタンスを選択し、プロパティインスペクタでインスタンス名を入力します。ActionScriptを使用してインスタンスを作成した場合は、コードでインスタンス名を指定することもできます。ターゲットパスを使用すると、アクションをムービークリップに割り当てたり、変数やプロパティの値を取得または設定することができます。
インスタンス名の割り当て方法とドットシンタックスによるインスタンスのターゲット指定方法について詳しくは、Flash LiveDocsの「ドットシンタックスを使用したインスタンスのターゲット化について」(ActionScript 2.0の学習/シンタックスと言語の基礎/ドットシンタックスとターゲットパスについて/ドットシンタックスを使用したインスタンスのターゲット化について)および「About Scope and Targeting」(ActionScript 2.0の学習/シンタックスと言語の基礎/ドットシンタックスとターゲットパスについて/スコープとターゲット化について)のセクションを参照してください。
メモ:Flash Player 7以降でActionScriptを記述する場合、コードには大文字と小文字の区別があります。つまり、大文字の使用方法が少し異なる変数は、お互いに別の変数と見なされます。
区切子とは、ActionScriptコードの作成時に役立つ文字です。Flashには複数の区切子があります。区切子で最も一般的なタイプは、セミコロン(;)、コロン(:)、括弧[()]および波カッコ({})です。これらの各区切子は、ActionScript言語では特別な意味を持ち、データ型の定義、ステートメントの終了またはActionScriptの構造化に役立ちます。詳しくは、「About Language Punctuators」(ActionScript 2.0の学習/シンタックスと言語の基礎/言語区切子について )を参照してください。
定数とは、変更不可の固定値を持つプロパティであり、アプリケーションを通じて変わらない値です。Flashには、アプリケーション開発の単純化に役立つ定義済みの定数がいくつか用意されています。定数の例はKeyクラスにあります。このクラスには、Key.ENTERやKey.PGDNなど多数のプロパティがあります。定数を使用すると、EnterキーとPage Downキーのキーコード値がそれぞれ13と34であることを覚えておく必要がなくなります。定数を使用すると、開発やデバッグが容易になるだけでなく、作成するコードが同僚の開発者にとって読みやすくなります。詳細については、Flash LiveDocs の「定数およびキーワードについて」(ActionScript 2.0の学習/シンタックスと言語の基礎/定数およびキーワードについて)のセクションを参照してください。
ActionScriptのキーワードは、特定の種類のアクションを実行するために使用されます。これらは予約語でもあるため、識別子(変数、関数、ラベル名など)としては使用できません。予約語の例としては、if、else、this、function、returnなどがあります。詳細については、Flash LiveDocs の「キーワードについて」(ActionScript 2.0の学習/シンタックスと言語の基礎/定数およびキーワードについて/キーワードについて)のセクションを参照してください。
配列とは、そのプロパティが構造内の位置を表す数値で特定されるオブジェクトです。配列は、基本的には項目のリストです。一部の言語と異なり、ActionScriptでは、配列内の各エレメントを同じデータ型にする必要はありません。数値、日付、ストリングおよびオブジェクトを混在させたり、各配列インデックスでネストされた配列を追加することもできます。詳細については、Flash LiveDocs の「配列について」(ActionScript 2.0の学習/シンタックスと言語の基礎/配列について)のセクションを参照してください。
演算子とは、式内の値の組み合わせ、比較または変更方法を指定する文字です。式とは、Flashで評価できる任意のステートメントで値を返します。式を作成するには、演算子と値を組み合わせるか、関数を呼び出します。詳細については、Flash LiveDocs の「シンタックス、ステートメント、および式について」(ActionScript 2.0の学習/シンタックスと言語の基礎/シンタックス、ステートメント、および式について)のセクションを参照してください。
例えば、数式は、数値演算子を使用して使用する値を操作します。演算子文字の例としては、+、<、*、=などがあります。式は演算子とオペランドから構成され、値を表すActionScript記号を適正に組み合わせたものです。オペランドとは、演算子がアクションを実行する対象となるコードの一部です。例えば、x + 2という式では、xと2がオペランドで、+が演算子となります。詳細については、Flash LiveDocs の「演算子について」(ActionScript 2.0の学習/シンタックスと言語の基礎/演算子について)のセクションを参照してください。
シンタックスとステートメントについては、Flash LiveDocsの次のセクションを参照してください。
イベントとは、SWFファイルの再生中に発生するアクションです。マウスクリックやキープレスなどのイベントは、ユーザイベントと呼ばれます。直接的なユーザインタラクションの結果として発生するためです。ステージ上のムービークリップの最初の外観など、Flash Playerで自動的に生成されるイベントは、システムイベントと呼ばれます。ユーザによって直接生成されないためです。
アプリケーションがイベントに対応するには、イベントハンドラ、つまり特定のオブジェクトとイベントに関連付けられたActionScriptコードを使用する必要があります。例えば、ユーザがステージ上のボタンをクリックしたときに、再生ヘッドを次のフレームに進めることもできます。または、ネットワーク経由でXMLファイルのロードが完了したときに、そのファイルの内容をテキストフィールドに表示することもできます。
ActionScriptでのイベントの処理方法は、イベントのタイプに応じて変えることができます。次に、ActionScriptでのイベントの処理方法をリストします。次の方法すべてが、すべてのイベントタイプに適用されるわけではありません。
onClipEventハンドラ)ボタンとムービークリップのイベントハンドラを使用することは、コードをオブジェクトに関連付ける必要があるため、お勧めできません。代わりに、ベストプラクティスとして、可能な限りイベントハンドラのメソッドを使用して、コードをタイムライン上のフレームスクリプトまたはクラスファイルに配置します。
メモ:イベントハンドラとMovieClip.loadMovieメソッドの併用は、予測不可能な場合があります。on()を使用してイベントハンドラをボタンに関連付ける場合、またはMovieClip.onPressハンドラなどのイベントハンドラメソッドを使用して動的ハンドラを作成してから、loadMovie()を呼び出す場合、新しい内容のロード後にイベントハンドラが使用できなくなります。ただし、onClipEventハンドラまたはonハンドラを使用してイベントハンドラをムービークリップに関連付けてから、ムービークリップ上でloadMovie()を呼び出す場合、新しい内容のロード後でもイベントハンドラは使用できます。
イベントハンドラのメソッドは、該当するクラスのインスタンス上でイベントが発生したときに起動される、クラスのメソッドです。例えば、MovieClipクラスは、ムービークリップオブジェクト上でマウスが押されたときに常に起動される、onPressイベントハンドラを定義します。ただし、クラスの他のメソッドとは異なり、イベントハンドラを直接起動することはしません。該当するイベントの発生時に、Flash Playerによって自動的に起動されます。
イベントハンドラを定義するクラスの例としては、次のActionScriptクラスがあります。Button、ContextMenu、ContextMenuItem、Key、LoadVars、LocalConnection、Mouse、MovieClip、MovieClipLoader、Selection、SharedObject、Sound、Stage、TextField、XMLおよびXMLSocket。これらのクラスに用意されているイベントハンドラについて詳しくは、『ActionScript 2.0リファレンスガイド』の各クラスのエントリを参照してください。各イベントハンドラのタイトルには、handlerという語を追加することに注意してください。
デフォルトでは、イベントハンドラは未定義です。特定のイベントが発生した場合、対応するイベントハンドラが起動されますが、アプリケーションはそれ以上イベントに応答しません。アプリケーションがイベントに応答するようにするには、関数ステートメントで関数を定義してから、その関数を該当するイベントハンドラに割り当てます。そうすると、イベントの発生時に常にイベントハンドラに割り当てた関数が自動的に起動されます。
イベントハンドラは、イベントがオブジェクトのイベントハンドラメソッド名を適用するオブジェクト、イベントハンドラに割り当てる関数、およびコードの3つの部分で構成されています。次の例は、イベントハンドラの基本的な構造を示しています。
object.eventMethod = function ():Void {
// イベントに応答するコードをここに記述
};
例えば、ステージ上にnext_btnという名前のボタンがあるとします。次のコードは、関数をボタンのonPressイベントハンドラに割り当てています。この関数は、再生ヘッドを現在のタイムラインの次のフレームに進めます。
next_btn.onPress = function ():Void {
nextFrame();
};
関数参照の割り当て、イベントハンドラに渡されるパラメータの受け取り、関数のイベントハンドラへの割り当ておよびメソッドのオーバーライドを行うことができます。これらのトピックについて詳しくは、Flash LiveDocsの次のセクションを参照してください。イベントハンドラメソッドの使用(ActionScript 2.0の学習/イベントの処理/イベントハンドラメソッドの使用)
イベントリスナーを使用すると、リスナーオブジェクトと呼ばれるオブジェクトが、ブロードキャストオブジェクトと呼ばれる別のオブジェクトによってブロードキャストされるイベントを受け取ることができます。ブロードキャストオブジェクトは、ブロードキャストにより生成されるイベントを受け取るリスナーオブジェクトを登録します。例えば、ステージからonResize通知を受け取るムービークリップオブジェクトを登録するか、ボタンインスタンスでテキストフィールドオブジェクトからonChanged通知を受け取ることもできます。1つのブロードキャストからイベントを受け取る複数のリスナーオブジェクトを登録したり、複数のブロードキャスターからイベントを受け取る1つのリスナーオブジェクトを登録したりできます。
イベントのリスナー/ブロードキャスターモデルでは、イベントハンドラのメソッドとは異なり、複数のコードで競合なしに同じイベントをリッスンできます。XML.onLoad()などのリスナー/ブロードキャスターモデルを使用しないイベントモデルでは、各種のコードが同じイベントをリッスンしている場合、問題を起こす可能性があります。別のコードが、その1つのXML.onLoadコールバック関数参照の制御で競合します。リスナー/ブロードキャスターモデルを使用すると、コードのボトルネックを心配せずにリスナーを同じイベントに簡単に追加できます。
メモ:Key、Mouse、MovieClipLoader、Selection、StageおよびTextFieldのActionScriptクラスは、イベントをブロードキャストできます。クラスに使用できるリスナーを確認するには、Flash LiveDocsの『ActionScript 2.0リファレンスガイド』の各クラスのエントリを参照してください。
イベントリスナーのイベントモデルは、次の2つの大きな違いを除き、イベントハンドラ(「イベントハンドラのメソッドの使用」を参照)のモデルと似ています。
addListener()を呼び出します。このメソッドは、イベントを受け取るリスナーオブジェクトを登録します。次のコードは、イベントリスナーモデルの概要を示しています。
var listenerObject:Object = new Object();
listenerObject.eventName = function(eventObj:Object):Void {
// コードをここに記述
};
broadcasterObject.addListener(listenerObject);
このコードは、eventNameプロパティを持つオブジェクトlistenerObjectで始まっています。リスナーオブジェクトとしては、ステージ上の既存のオブジェクト、ムービークリップ、ボタンインスタンスなど任意のオブジェクトまたは任意のActionScriptクラスのインスタンスを指定できます。例えば、カスタムムービークリップで、ステージリスナーのリスナーメソッドを実装することもできます。複数のタイプのリスナーをリッスンする1つのオブジェクトを持つこともできます。
eventNameプロパティはbroadcasterObject上で発生するイベントで、イベントはその後broadcasterObjectによってlistenerObjectにブロードキャストされます。1つのイベントブロードキャストに複数のリスナーを登録できます。
関数は、イベントに何らかの方法で応答するイベントリスナーに割り当てます。
最後に、ブロードキャストオブジェクト上でaddListener()メソッドを呼び出し、リスナーオブジェクトをaddListener()メソッドに渡します。
イベント受け取るリスナーオブジェクトの登録を解除するには、ブロードキャストオブジェクトのremoveEventListener()メソッドを呼び出し、削除するイベント名とリスナーオブジェクトを渡します。
broadcasterObject.removeListener(listenerObject);
イベントリスナーの使用例については、Flash LiveDocsの「イベントリスナーの使用」(ActionScript 2.0の学習/イベントの処理/イベントリスナーの使用)のセクションを参照してください。
イベント処理について詳しくは、Flash LiveDocsの『ActionScript 2.0の学習』の「イベントの処理」セクション内を参照してください。
ActionScript 2.0は完全なオブジェクト指向プログラミング(OOP)言語で、特に大規模なFlashアプリケーションやプレゼンテーションの作成時にいくつかの利点があります。OOPでは再利用を促進できます。ActionScript 2.0で作成したクラスを再利用するには、そのクラスの機能を他のクラスで継承します。OOPのモジュール性によって、アプリケーションの構造を変更せずに、アプリケーションのコンポーネントを置き換えまたはスワップできます。最後に、OOP設計の基本的なメタファーによって、自然界(内部状態を持ち特定の事項を実行できるオブジェクト)が綿密にミラーリングされるため、アプリケーションの設計プロセスが速く簡単になります。
OOP言語は、ActionScriptと同様にクラスとインスタンスに基づいています。クラスは、一連のオブジェクトを区別するすべてのプロパティ、オブジェクトのカテゴリを定義します。クラスは、オブジェクトのプロパティ(データ)とメソッド(ビヘイビア)を記述します。建築用の設計図がビルの特性を記述しているのとよく似ています。Dateクラスは、固有のActionScriptクラスです。Dateクラスを使用すると、多くのインスタンスを作成できます。各インスタンス、つまりDateオブジェクトは、異なる(または同じ)日付を表すことができます。例えば、2010年8月1日を表すDateオブジェクトと2010年8月2日を表す別のDateオブジェクトを作成できます。各オブジェクトは、Dateクラスから同じ機能を継承します。ただし、各インスタンスは、同じ設計図で建てられた2つのビルがそれぞれ固有のインスタンスであるように、独立したオブジェクトです。
クラスはデータ型を定義します(「データの理解」セクションを参照)。アプリケーションに既存のデータ型と相容れないデータの新しい論理的分類がある場合は、新しいクラスを記述できます。例えば、Tシャツを陳列するアプリケーションを作成する場合、色やスタイルなどそのデータ型の特性を定義するTShirtクラスを記述できます。クラスを定義するには、外部スクリプトファイルでclassキーワードを使用します。Flashオーサリングツールで外部スクリプトファイルを作成するには、ファイル/新規/ActionScriptファイルを選択します。
ActionScript 2.0には、例のごとく、Javaなど他のプログラミング言語にある強力で使い慣れたいくつかのOOP概念とキーワード(class、interface、packageなど)が備わっています。このプログラミング言語を使用すると、再利用可能で拡大/縮小でき、信頼性の高い保守可能なプログラム構造を構築できます。ユーザに完全なコーティング支援とデバッグ情報を提供することで、開発時間を短縮することもできます。ActionScript 2.0を使用すると、オブジェクトを作成して継承を確立し、カスタムクラスを作成してFlashでトップレベルクラスとビルトインクラスを拡張できます。
Flash Basic 8とFlash Professional 8には、約65個のトップレベルクラスがあります。これらのクラスには、中核のデータ型(Array、Boolean、Dateなど)からカスタムエラーやイベントまでのすべてと共に、外部コンテンツ(XML、イメージ、変数など)をロードするいくつかの方法が用意されています。独自のカスタムクラスを記述してそれらをFlashドキュメントに統合するか、トップレベルクラスを拡張して独自の機能を追加したり、既存の機能を変更したりできます。例については、Flash LiveDocsのActionScript 2.0の学習/クラス/アプリケーションでのカスタムクラスの使用について/クラスメンバーについてのセクションのチュートリアルを参照してください。このチュートリアルは、人物のnameとageのカスタムプロパティを含む、カスタムPersonクラスの作成方法を説明しています。その後、このカスタムクラスをドキュメントの新しいデータ型として扱って、new演算子を使用してクラスの新しいインスタンスを作成できます。
カスタムクラスを外部ActionScript(AS)ファイルに記述し、FLAファイルのコンパイル時にアプリケーションに読み込むことができます。クラスは、大規模なFlashアプリケーションの作成時に非常に役に立ちます。アプリケーションにある多数の複雑な部分を外部クラスファイルに整理できるためです。たくさんのロジックをカスタムクラスに移動すると、コードの再利用を容易にできるだけでなく、一部のメソッドやプロパティをActionScriptコードの他の部分から「隠す」こともできます。これにより、チームの他の開発者が機密情報にアクセスしたり、変更不可のデータを変更したりするのを防止できます。
クラスを使用する場合、既存のクラスを拡張して、新しい機能を追加したり既存の機能を変更したりできます。例えば、3つの非常によく似たクラスを作成する場合、まずベースクラス(抽象)を記述し、その後ベースクラスを拡張した3つのクラス(実装)を記述します。これら3つのサブクラスはメソッドやプロパティを追加できるため、同じコードとロジックをすべて複製した3つのクラスファイルを作成する必要はありません。
クラスを使用するもう1つの利点は、コードの再利用性です。例えば、Drawing APIを使用してカスタムのプログレスバーを作成するカスタムクラスを作成する場合、プログレスバークラスをクラスパスに保存し、カスタムクラスを読み込むことですべてのFlashドキュメントで同じコードを再利用できます。クラスパスの設定について詳しくは、「クラスファイルの読み込みについて」および「クラスパスの設定と修正について」を参照してください。
OOPの原則の概要については、Flash LiveDocsの「Object-Oriented Programming Fundamentals」(ActionScript 2.0の学習/クラス/オブジェクト指向プログラミングと Flash について/オブジェクト指向プログラミングの基礎)のセクションを参照してください。
OOPおよびカスタムクラスファイルの記述について詳しくは、Flash LiveDocsの「ActionScript 2.0の学習」の「クラス」の次のトピックを参照してください。
次の書籍とリソースは、ActionScriptの高度なトピックやオブジェクト指向プログラミングについて学習する際に役立ちます。