プログラムでインスタンスをつくるには、「new クラス名()」というかたちでコンストラクタを呼び出すのが原則だ。ところが、MovieClipやTextFieldなどは、コンストラクタでインスタンスを生成することができず、MovieClip.createEmptyMovieClip()あるいはMovieClip.createTextField()などといった特別なメソッドを使う必要があった。ActionScript 3.0では、これらも原則どおりコンストラクタで作成することができるMYCOMジャーナル「AdobeのFlash担当者に訊く - Flash Player 9とActionScript 3.0何が変わる?」注[*5]
という訳で、new演算子を使って、インスタンスをつくってみましょう。
そこで、Spriteインスタンスをnew演算子で生成して、タイムラインに表示してみましょう。ただし、インスタンスを生成するだけでは、タイムラインには表示されません。DisplayObjectContainer.addChild()メソッドを用いて、タイムラインの表示階層を管理するディスプレイリストに加える必要があります(ディスプレイリストについては、akihiro kamijo「DisplayObjectContainerクラス」参照)。
Spriteクラスのフルパスの名前(完全修飾クラス名)は、flash.display.Spriteです。完全修飾クラス名およびimportステートメントについては、「スクリプトでフィルタを使う − BlurFilter」をお読みください。なお、プロパティの型指定に用いられているuintは、正の整数を表します(akihiro kamijo「intとuint」 )。
スクリプト001■Spriteインスタンスを生成して表示する[*1]
// タイムライン: _level0
// 第1フレームアクション
// Spriteクラスのimport宣言
import flash.display.Sprite;
var nSize:uint = 50; // 矩形の1辺の長さ
// Spriteインスタンスの生成
var mySprite:Sprite = new Sprite();
// Spriteインスタンスへの矩形の描画
mySprite.graphics.beginFill(0x0000FF);
mySprite.graphics.drawRect(-nSize/2, -nSize/2, nSize, nSize);
// Spriteインスタンスをディスプレイリストに追加(タイムラインに表示)
this.addChild(mySprite);
// Spriteインスタンスをステージ中央に配置
mySprite.x = this.stage.stageWidth/2;
mySprite.y = this.stage.stageHeight/2;
_____
[*1] スクリプト中で使われているActionScript 3.0の新しいプロパティとメソッドの概要は、つぎのとおりです(「ActionScript 3.0 Language Reference」参照)。