作成日

5 March 2007

ActionScript 2.0とActionScript 3.0には多くの相違点があります。この記事では、表示APIの変更点を中心に解説します。この記事では、ActionScript 2.0およびActionScript 3.0で記述された2つの非常に単純なAdobe Flashファイルを使用します。これらのアプリケーションはとても単純ですが、これらを使用することでActionScript 3.0での表示APIの基本的な機能を学習できます。この記事では、表示APIの基礎についてのみ説明します。内容について詳しくは、記事の最後に明記してある記載先を参照してください。

この記事の最初の節では、赤い矩形およびテキストフィールドを描画するActionScript 2.0で記述された簡単なコードについて説明します。矩形をクリックすると、テキストフィールドのテキストが変更されます。2番目の節では、この例をActionScript 3.0で書き換えます。また、コードを示す前に、ActionScript 3.0を使用する新しい概念について簡単に説明します。このプロセスでは、表示システムがActionScript 3.0でどのように機能するかについての基本的な考えを学習します。

ActionScript 2.0で記述された非常に単純な例

ActionScript 2.0で記述された例を参照してください。次のスクリプトは、ステージ上に赤い矩形を描画します。

var shape_mc:MovieClip=_root.createEmptyMovieClip("shape",_root.getNextHighestDepth()); shape_mc.lineStyle(1, 0x000000); shape_mc.beginFill(0xff0000); shape_mc.moveTo(0, 0); shape_mc.lineTo(50, 0); shape_mc.lineTo(50, 50); shape_mc.lineTo(0, 50); shape_mc.lineTo(0, 0); shape_mc.endFill();

このコードは、_rootオブジェクトの最上位レベルのcreateEmptyMovieClip()メソッドを使用して、空のムービークリップを作成します。次に、新規に作成されたムービークリップの描画メソッドを使用して、赤い矩形を描画します。

マウスクリックにこのムービークリップを反応させるために、イベントハンドラを記述します。

shape_mc.onPress=function(){ text_txt.text="You pressed the rectangle"; }

次のコードはテキストフィールドを作成します。

var text_txt = _root.createTextField("text", _root.getNextHighestDepth(), 100, 0, 150, 20); text_txt.text = "Click the rectangle.";

_rootオブジェクトのcreateTextField()メソッドを使用してテキストフィールドを作成し、テキストフィールドのtextプロパティに値を割り当てます。

FlashでControl+Enterキーを押すと、Flashコンテンツを表示できます。SWFファイルは非常に単純です。矩形をクリックするとテキストフィールドの値が変更されます。

ActionScript 3.0を使用した例の書き換え

次に、ActionScript 3.0を使用して同じ例を記述します。実際にコードを記述する前に、何点か説明する必要があります。

図1は、ActionScript 3.0アプリケーションの表示リストを示しています。表示リストはツリー構造になっており、ステージに追加されている全ての表示オブジェクトを含んでいます。このように、ActionScript 3.0には「_root」ムービークリップはありません。ActionScript 3.0のトップレベルの表示オブジェクトはStageです。他の表示オブジェクトは、トップレベルのオブジェクトから下へ展開していきます。デフォルトの表示オブジェクトは、SWFファイルを表すMovieClipオブジェクトで、他のすべての表示オブジェクトの親になります。コードが作成する2つの表示オブジェクトは、デフォルトの表示オブジェクトの子として追加されます。

ActionScript 2.0の例で、_rootオブジェクト自体はムービークリップです。実際ActionScript 2.0では、表示できるオブジェクトを作成する場合、選択肢は少なく、ムービークリップかテキストフィールドです。

一方、ActionScript 3.0には、ShapeSpriteMovieClipなどの表示オブジェクトクラスが多数含まれています。ActionScript 2.0では、MovieClipオブジェクトを使用して形状や線を描画できます。またムービークリップを使用して、SWFファイルをムービークリップにロードできます。ただし、他の機能を一切使用せずに、オブジェクトだけを描画する場合もあります。この場合、完全に機能するムービークリップを作成するとメモリやCPU時間の無駄遣いになります。ActionScript 3.0では、Shapeオブジェクトを使用できます。ShapeクラスにはDrawing APIが含まれていますが、他のムービークリップとの関連付けや読み込みをサポートしていないので、完全に機能するMovieClipオブジェクトの使用と比べるとリソースを節約できます。

ActionScript 3.0コードを見てみましょう。最初に赤い矩形を描画します。

var mySprite:Sprite = new Sprite(); mySprite.graphics.beginFill(0xff0000); mySprite.graphics.lineStyle(1, 0x000000); mySprite.graphics.drawRect(0, 0, 50, 50); mySprite.graphics.endFill();

Spriteクラスは、ActionScript 3.0の表示オブジェクトのタイプを定義し、描画と関連付けをサポートします。Spriteクラスを使用するのは、ユーザによるマウスクリックに矩形が反応する必要があるためです。関連付けが必要ない場合は、Shapeクラスのみを使用します。

次にコードは、mySpriteという名前の変数を宣言し、新しいキーワードを使用してSpriteオブジェクトの新しいインスタンスを作成します。コードは、矩形を描画しません。Flashは、Spriteオブジェクトのメソッドを使用して矩形を描画するのではなく、Spriteオブジェクトのグラフィックプロパティのメソッドを使用して矩形を描画します。描画をサポートする各クラス(ShapeSprite、およびMovieClip)には、グラフィックという名前のプロパティがあります。このプロパティはGraphicsクラスのインスタンスで、すべての描画メソッドが含まれています。

コードにはクリックイベントの追加イベントハンドラー(MouseEvent.CLICK定数で定義される)が含まれています。イベントリスナーの追加についてはこの記事のメイントピックではないので、ここで詳しくは説明しません。コードを確認してみると、ActionScript 2.0でのオブジェクトにイベントリスナーを追加する方法に似ています。

function clickHandler(event:Event):void { txt.text="You clicked the rectangle."; } mySprite.addEventListener(MouseEvent.CLICK,clickHandler);

その後、コードは、トップレベルのコンテナに新しく作成したmySpriteオブジェクト(図1のデフォルト表示オブジェクト)を追加します。

addChild(mySprite);

次に、コードはテキストフィールドをインスタンス化します。

var txt:TextField = new TextField(); txt.x = 100; txt.y = 0; txt.width = 150; txt.height = 20; txt.text = "Click the rectangle.";

テキストフィールドを作成するコードを理解するのは簡単です。Spriteインスタンスを作成するコードに似ています。

最後に、コードはaddChild()メソッドを使用して、トップレベルのコンテナにこのテキストフィールドを追加します。

addChild(txt);

この例を実行すると、ActionScript 2.0バージョンの実行方法と同じであることがわかります。

次のステップ

このチュートリアルの2つの例では、コンテンツを表示するためにActionScript 3.0を使用する方法を示します。これは、ActionScript 3.0での表示オブジェクト作成の基本を示す簡単な例です。

この記事では、APIのほんの一部を取り上げました。さらにActionScript 3.0について学習するには、ActionScript言語の移行に関するページを参照してください。ActionScript 2.0と3.0の言語の相違点について説明しています。

記載先

このトピックについては、LiveDocs ActionScriptリファレンスガイドを使用して調査しました。

必要条件

この記事に必要な予備知識

ActionScript 2.0の基本的な理解

ユーザーレベル

初級