Flash CS3 ドキュメンテーション |
|||
| ActionScript 3.0 のプログラミング > ActionScript のオブジェクト指向プログラミング > クラス > クラス定義 | |||
ActionScript 3.0 のクラス定義には、ActionScript 2.0 のクラス定義に使用したシンタックスと似たシンタックスを使用します。クラス定義の正しいシンタックスは、class キーワードの後にクラス名が必要です。クラス名の後には、中括弧 ({}) で囲まれたクラスの本体が続きます。たとえば、次のコードは、visible という名前の変数を 1 つ含む Shape という名前のクラスを作成します。
public class Shape
{
var visible:Boolean = true;
}
シンタックスが大きく変更された点の 1 つに、パッケージ内のクラス定義があります。ActionScript 2.0 では、クラスがパッケージ内部にある場合は、クラス宣言にパッケージ名を含める必要があります。ActionScript 3.0 では package ステートメントが導入されていますが、パッケージ名は、クラス宣言ではなくパッケージ宣言に含める必要があります。たとえば、次のクラス宣言は、flash.display パッケージに含まれる BitmapData クラスを、ActionScript 2.0 および ActionScript 3.0 で定義する方法を示します。
// ActionScript 2.0
class flash.display.BitmapData {}
// ActionScript 3.0
package flash.display
{
public class BitmapData {}
}
ActionScript 3.0 では、次の 4 つの属性のいずれかを使用して、クラス定義を変更できます。
|
属性 |
定義 |
|---|---|
|
|
実行時にインスタンスにプロパティを追加できます。 |
|
|
別のクラスによって拡張することはできません。 |
|
|
現在のパッケージ内の参照に対して表示されます。 |
|
|
すべての場所にある参照に対して表示されます。 |
internal を除くこれらの属性では、属性を明示的に含めて関連付けられたビヘイビアを取得します。たとえば、クラスを定義するときに dynamic 属性を含めなかった場合、実行時にクラスインスタンスにプロパティを追加することはできません。次のコードで示すように、クラス定義の開始部分に属性を配置することで、明示的に属性を割り当てます。
dynamic class Shape {}
このリストには、abstract という名前の属性は含まれていません。ActionScript 3.0 では抽象クラスをサポートしていないためです。また、リストには private および protected という属性も含まれていません。これらの属性は、クラス定義内でのみ意味を持ち、クラス自体には適用できません。パッケージの外部でクラスをパブリックに表示しない場合は、パッケージ内にクラスを配置し、internal 属性でクラスを宣言します。または、internal と public 属性をいずれも省略することができます。この場合は、コンパイラによって internal 属性が自動的に追加されます。クラスが定義されたソースファイル外でクラスを表示しない場合は、ソースファイルの下部の、パッケージ定義の閉じ中括弧の下にクラスを配置します。
中括弧で囲まれたクラス本体は、クラスの変数、定数、およびメソッドを定義するために使用します。次の例は、Flash Player API の Accessibility クラスの宣言を示します。
public final class Accessibility
{
public static function get active():Boolean;
public static function updateProperties():void;
}
クラス本体内で名前空間を定義することもできます。次の例は、クラス本体内で名前空間を定義し、そのクラスのメソッドの属性として使用する方法を示します。
public class SampleClass
{
public namespace sampleNamespace;
sampleNamespace function doSomething():void;
}
ActionScript 3.0 では、クラス本体内に、定義だけでなくステートメントを含めることもできます。クラス本体内にあるが、メソッド定義の外にあるステートメントは、クラス定義が最初に検出され、関連付けられたクラスオブジェクトが作成されるときに 1 度のみ実行されます。次の例には、外部関数である hello() と、クラスが定義されたときに確認メッセージを出力する trace ステートメントの呼び出しが含まれています。
function hello():String
{
trace("hola");
}
class SampleClass
{
hello();
trace("class created");
}
// クラス作成時に出力
hola
class created
旧バージョンの ActionScript とは異なり、ActionScript 3.0 では、同じクラス本体内で同じ名前を持つ静的プロパティとインスタンスプロパティを定義することができます。たとえば、次のコードは、message という名前の静的変数と同じ名前のインスタンス変数を宣言します。
class StaticTest
{
static var message:String = "static variable";
var message:String = "instance variable";
}
// スクリプト内で
var myST:StaticTest = new StaticTest();
trace(StaticTest.message); // 出力 : 静的変数
trace(myST.message); // 出力 : インスタンス変数
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート
現在のページ: http://livedocs.adobe.com/flash/9.0_jp/main/00000061.html