class ステートメント

[dynamic] class className [ extends superClass ] [ implements interfaceName[, interfaceName... ] ] { 
 // class definition here
}

カスタムクラスを定義します。自分で定義したメソッドとプロパティを共有するオブジェクトをインスタンス化できます。たとえば、送り状追跡システムを作成する場合に、送り状クラスを定義して、各送り状で必要になるすべてのメソッドとプロパティを定義します。その後、new invoice() コマンドを使用して、送り状オブジェクトを作成します。

クラスの名前は、そのクラスが格納された外部ファイルの名前と一致している必要があります。外部ファイルの名前は、クラス名にファイル拡張子 .as が付けられた名前である必要があります。たとえば、あるクラスに Student という名前を付ける場合、このクラスを定義するファイルの名前は Student.as になります。

クラスがパッケージ化されている場合、クラス宣言には base.sub1.sub2.MyClass という形式で完全修飾されたクラス名を使用する必要があります。さらに、パッケージ構造を反映するディレクトリ構造のパス内にクラスの AS ファイルを保存する必要があります (たとえば base/sub1/sub2/MyClass.as)。クラス定義の形式が "class MyClass" の場合、デフォルトパッケージに含まれ、パス内の所定のディレクトリの最上位レベルに MyClass.as ファイルを置く必要があります。

そのため、クラスを作成する前に、どのようなディレクトリ構造にするかあらかじめ決めておくことをお勧めします。そうしないと、クラスファイルを作成した後に移動する場合、新しい場所を反映させるためにクラス宣言ステートメントを修正する必要が生じます。

クラス定義はネストできません。つまり、クラス定義内に別のクラスを定義することはできません。

実行時にオブジェクトがダイナミックプロパティを追加したり、ダイナミックプロパティにアクセスしたりできるようにする場合は、クラスステートメントの前に dynamic キーワードを付加します。インターフェイスを実装するクラスを宣言するには、implements キーワードを使用します。クラスのサブクラスを作成するには、extends キーワードを使用します。クラスは 1 つしか拡張できませんが、インターフェイスは複数実装することができます。implements キーワードと extends キーワードは、1 つのステートメントで一緒に使うことができます。次の例に、implements キーワードと extends キーワードの一般的な使い方を示します。

class C implements Interface_i, Interface_j // OK 
class C extends Class_d implements Interface_i, Interface_j // OK 
class C extends Class_d, Class_e // not OK 

対応バージョン : ActionScript 2.0、Flash Player 6

パラメータ

className:String - クラスの完全修飾名。

次の例では、Plant という名前のクラスを作成しています。Plant コンストラクタは 2 つのパラメータを受け取ります。

// Filename Plant.as 
class Plant { 
 // Define property names and types 
 var leafType:String; 
 var bloomSeason:String; 
 // Following line is constructor 
 // because it has the same name as the class 
 function Plant(param_leafType:String, param_bloomSeason:String) { 
 // Assign passed values to properties when new Plant object is created 
 this.leafType = param_leafType; 
 this.bloomSeason = param_bloomSeason; 
 } 
 // Create methods to return property values, because best practice 
 // recommends against directly referencing a property of a class 
 function getLeafType():String { 
 return leafType; 
 } 
 function getBloomSeason():String { 
 return bloomSeason; 
 } 
}

外部のスクリプトファイルまたは [アクション] パネルで、new 演算子を使用して Plant オブジェクトを作成します。

var pineTree:Plant = new Plant("Evergreen", "N/A"); 
// Confirm parameters were passed correctly 
trace(pineTree.getLeafType()); 
trace(pineTree.getBloomSeason()); 

次の例では、ImageLoader というクラスを作成しています。ImageLoader コンストラクタは 3 つのパラメータを受け取ります。

// Filename ImageLoader.as 
class ImageLoader extends MovieClip { 
 function ImageLoader(image:String, target_mc:MovieClip, init:Object) { 
 var listenerObject:Object = new Object(); 
 listenerObject.onLoadInit = function(target) { 
 for (var i in init) { 
 target[i] = init[i]; 
 }
 }; 
 var JPEG_mcl:MovieClipLoader = new MovieClipLoader(); 
 JPEG_mcl.addListener(listenerObject); 
 JPEG_mcl.loadClip(image, target_mc); 
 } 
} 

外部のスクリプトファイルまたは [アクション] パネルで、new 演算子を使用して ImageLoader オブジェクトを作成します。

var jakob_mc:MovieClip = this.createEmptyMovieClip("jakob_mc", this.getNextHighestDepth()); 
var jakob:ImageLoader = new ImageLoader("http://www.helpexamples.com/flash/images/image1.jpg", jakob_mc, {_x:10, _y:10, _alpha:70, _rotation:-5});

関連項目

dynamic ステートメント


 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート

現在のページ: http://livedocs.adobe.com/flash/9.0_jp/main/00001313.html