ステートメントとは、実行時のアクションを実行または指定する言語エレメントです。たとえば、return ステートメントは、実行された関数の結果の値を返します。if ステートメントは、条件を評価して、次に行うべき処理を判定します。switch ステートメントは、ActionScript ステートメントの分岐構造を作成します。

属性キーワードは定義の意味を変更します。また、クラス、変数、関数、および名前空間の定義に適用できます。定義キーワードは、変数、関数、クラス、およびインターフェイスなどのエンティティを定義する場合に使用します。プライマリ式のキーワードはリテラル値を表します。予約語のリストについては、『ActionScript 3.0 のプログラミング』を参照してください。

ディレクティブにはステートメントと定義が含まれ、コンパイル時または実行時に適用できます。次の表では、ステートメントおよび定義以外のディレクティブは、ディレクティブとしてラベルされています。

関連項目

シンタックス

 ステートメント一覧
 breakループ (forfor..infor each..indo..while、または while) で使用します。または、switch ステートメント内の特定のケースと関連するステートメントのブロック内でも使用します。
 caseswitch ステートメントのジャンプターゲットを定義します。
 continueループの終わりまで制御が通過したかのように、最も内側のループ内の残りのステートメントをすべてスキップして、ループの次の反復を開始します。
 defaultswitch ステートメントのデフォルトケースを定義します。
 do..whilewhile ループに似ていますが、条件の最初の評価に先立ってステートメントが実行される点が異なります。
 elseif ステートメントの条件が false を返したときに実行するステートメントを指定します。
 forinit (初期化) 式を 1 回だけ評価してから、ループシーケンスを開始します。
 for..inオブジェクトの動的プロパティまたは配列のエレメントに対して反復処理を行い、各プロパティまたはエレメントに対して statement を実行します。
 for each..inコレクションのアイテムに対して反復処理を行い、各アイテムに対して statement を実行します。
 if条件を評価して、次のステートメントを実行するかどうかを判定します。
 labelステートメントを break または continue で参照可能な識別子と関連付けます。
 return実行を呼び出し元の関数に直ちに返します。
 superメソッドやコンストラクタのスーパークラスまたは親バージョンを呼び出します。
 switch式の値に応じて、ステートメントへの転送を制御します。
 throwcatch コードブロックによって処理 (キャッチ) できるエラーを生成 (スロー) します。
 try..catch..finallyエラーが発生する可能性のあるコードブロックを囲み、そのエラーに対処します。
 while条件を評価して、条件の評価結果が true になる場合はステートメントを実行します。その後、ループの先頭に戻り、再び条件を評価します。
 withステートメントの実行に使用するデフォルトのオブジェクトを設定します。記述するコードの量を減らすことができます。
 属性キーワード一覧
 dynamic実行時に追加された dynamic プロパティをクラスのインスタンスで保有するよう指定します。
 finalメソッドのオーバーライドまたはクラスの拡張を制限します。
 internalクラス、変数、定数、または関数に同じパッケージ内のすべての呼び出し元からアクセスできるよう指定します。
 nativeFlash Player がネイティブコードで関数またはメソッドを実装するよう指定します。
 overrideメソッドで継承したメソッドを置き換えるよう指定します。
 private変数、定数、メソッド、または名前空間を定義したクラスからのみアクセスできるよう指定します。
 protected変数、定数、メソッド、または名前空間を定義したクラスとそのサブクラスからのみアクセスできるよう指定します。
 publicクラス、変数、定数、またはメソッドにすべての呼び出し元からアクセスできるよう指定します。
 static変数、定数、またはメソッドがクラスのインスタンスではなくクラスに属するよう指定します。
 定義キーワード一覧
 ... (rest) parameter関数が任意の数のカンマ区切りの引数を取るよう指定します。
 class独自で定義したメソッドとプロパティを共有するオブジェクトをインスタンス化できるクラスを定義します。
 const定数 (値を 1 回だけ割り当てることができる変数) を指定します。
 extends他のクラスのサブクラスとするクラスを定義します。
 function特定のタスクを実行するよう定義した一連のステートメントで構成されます。
 getプロパティと同じように読み取り可能なメソッドである getter を定義します。
 implementsクラスでインターフェイスを実装するかどうかを指定します。
 interfaceインターフェイスを定義します。
 namespace定義の可視性を制御できます。
 package他のスクリプトから読み込んだ個別のグループにコードを分類できます。
 setパブリックインターフェイスでプロパティとして表示されるメソッドである setter を定義します。
 var変数を指定します。
 ディレクティブ一覧
 default xml namespace default xml namespace ディレクティブは、XML オブジェクトに使用するデフォルトの名前空間を設定します。
 import外部で定義されたクラスおよびパッケージをコードで使用できるようにします。
 include指定したファイル内のコマンドを呼び出し元のスクリプトにインクルードし、そのスクリプトの一部であるかのように扱います。
 use namespace指定した名前空間をオープンな名前空間のセットに追加します。
 名前空間一覧
 AS3プロトタイププロパティの代わりに固定プロパティとして使用する、ActionScript コアクラスのメソッドおよびプロパティを定義します。
 flash_proxyProxy クラスのメソッドを定義します。
 object_proxyObjectProxy クラスのメソッドを定義します。
 プライマリ式のキーワード一覧
 falsefalse を表すブール値です。
 null変数に割り当てることができる特別な値、またはデータがない場合に関数から返される特殊な値です。
 thisメソッドに含まれるオブジェクトへの参照です。
 truetrue を表すブール値です。
ステートメント、 キーワード、ディレクティブの詳細
... (rest) parameterdefinition keyword
使用法
function functionName(parameter0, parameter1, ...rest){ // ステートメント } 

関数が任意の数のカンマ区切りの引数を取るよう指定します。引数のリストは配列となり、関数本体を介してアクセスできます。配列の名前をパラメータ宣言にある ... 文字の後に指定します。パラメータには、予約語ではない名前を指定することができます。

他のパラメータと共に使用する場合は、最後のパラメータとして ... (rest) パラメータ宣言を指定する必要があります。... (rest) パラメータ配列は、関数に渡された引数の数が他のパラメータの数より多い場合のみ作成されます。

カンマ区切りリストの引数は、それぞれ配列のエレメントとして配置されます。Array クラスのインスタンスを渡す場合は、配列全体が ... (rest) パラメータ配列の 1 つのエレメントに配置されます。

このパラメータを使用すると、arguments オブジェクトにアクセスできなくなります。... (rest) パラメータには arguments 配列および arguments.length プロパティと同じ機能がありますが、arguments.callee のような機能はありません。... (rest) パラメータを使用する前に、arguments.callee を使用する必要はありません。

パラメータ
rest:* — 関数に渡される引数の配列名を表す識別子です。このパラメータの名前を rest とする必要はありません。キーワード以外の任意の名前を付けることができます。... (rest) パラメータのデータ型を Array と指定することはできますが、混乱の原因となる場合があります。パラメータはカンマ区切りの値のリストを受け付けますが、Array クラスのインスタンスとは異なります。


次の例では、...(rest) パラメータを 2 つの異なる関数で使用します。最初の関数 traceParams は、rest 配列にある各引数について trace() 関数を呼び出します。次の関数 average() は引数のリストを取得して、その平均を返します。2 番目の関数のパラメータには別の名前 args を使用しています。
package {
    import flash.display.MovieClip;
    
    public class RestParamExample extends MovieClip {
        public function RestParamExample() {
            traceParams(100, 130, "two"); // 100,130,two
            trace(average(4, 7, 13));     // 8
        }
    }
}


function traceParams(... rest) {
     trace(rest);
 }
 
function average(... args) : Number{
    var sum:Number = 0;
    for (var i:uint = 0; i < args.length; i++) {
        sum += args[i];
    }
    return (sum / args.length);
}

関連項目

AS3namespace 

プロトタイププロパティの代わりに固定プロパティとして使用する、ActionScript コアクラスのメソッドおよびプロパティを定義します。"-as3" コンパイラオプションを true (Flex Builder 2 ではデフォルトの設定) に設定すると、AS3 名前空間は自動的にすべてのコアクラスに対してオープンになります。つまり、コアクラスのインスタンスでは、クラスのプロトタイプオブジェクトに割り当てられた同じプロパティおよびメソッドのバージョンの代わりに、固定プロパティおよびメソッドを使用します。固定プロパティを使用するとパフォーマンスが向上しますが、ECMAScript Edition 3 言語仕様 (ECMA-262) との後方互換性が失われます。

関連項目

breakstatement 
使用法

break [label]

ループ (forfor..infor each..indo..while、または while) で使用します。または、switch ステートメント内の特定のケースと関連するステートメントのブロック内でも使用します。break ステートメントをループ内で使用すると、ループ本体の残りの部分をスキップし、繰り返し処理を停止して、ループステートメントの次のステートメントを実行します。break ステートメントを switch 内で使用すると、case ブロック内の残りのステートメントをスキップし、囲んでいる switch ステートメントに続く最初のステートメントにジャンプします。

ネストされているループ内では、break は、そのループの残りの部分をスキップするだけで、ネストされている一連のループは終了しません。ネストされている一連のループを終了するには、label または try..catch..finally を使用します。

break ステートメントにはオプションのラベルを指定できますが、このラベルは外側のステートメントのラベルと一致している必要があります。外側のステートメントのラベルと一致しないラベルを使用すると、シンタックスエラーが発生します。ラベル付きの break ステートメントを使用すると、ネストされたループステートメント、switch ステートメント、または block ステートメントの複数のレベルを終了できます。例については、label ステートメントの項目を参照してください。

パラメータ
label:* — ステートメントと関連付けられたラベルの名前です。


次の例では、break を使用して無限ループから抜け出します。
var i:int = 0;
while (true) { 
    trace(i); 
    if (i >= 10) { 
        break; // this will terminate/exit the loop 
    } 
    i++; 
} 
/*
0 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10*/

関連項目

casestatement 
使用法
case jumpTarget: statements

switch ステートメントのジャンプターゲットを定義します。jumpTarget パラメータと、厳密な等価 (===) を使用している switch ステートメントの expression パラメータが等しい場合、break ステートメントが見つかるか、または switch ステートメントの終わりに到達するまで、statements パラメータ内のステートメントが実行されます。

case ステートメントを switch ステートメントの外側で使用すると、エラーが発生し、スクリプトはコンパイルされません。

メモ : statementsパラメータは、必ず break ステートメントで終了します。statements パラメータの break ステートメントを省略すると、switch ステートメントが終了せずに、次の case ステートメントが実行されます。

パラメータ
jumpTarget:* — 任意の式です。
statements:*jumpTargetswitch ステートメントの条件式に一致した場合に実行されるステートメントです。


次の例では、switch ステートメントの thisMonth のジャンプターゲットを定義しています。thisMonthcase ステートメント内の式と等しい場合は、ステートメントが実行されます。
var thisMonth:int = new Date().getMonth(); 
switch (thisMonth) { 
    case 0 : 
        trace("January"); 
        break; 
    case 1 : 
        trace("February"); 
        break; 
    case 5 : 
    case 6 : 
    case 7 : 
        trace("Some summer month"); 
        break; 
    case 8 : 
        trace("September"); 
        break; 
    default : 
        trace("some other month"); 
}

関連項目

classdefinition keyword 
使用法
[dynamic] [public | internal] [final] class className [ extends superClass ] [ implements interfaceName[, interfaceName...] ] { // ここにクラス定義を記述 }

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

ActionScript ソースファイルごとにパブリッククラスを 1 つ指定できます。同じファイルにパブリッククラス以外のクラスを含める場合、パブリッククラスは他のすべてのクラスの下に配置する必要があります。ファイル内の最後のクラスの名前は、そのクラスを含む ActionScript ソースファイルの名前と一致する必要があります。ソースファイルの名前は、クラス名にファイル拡張子 .as を付けた名前である必要があります。たとえば、あるクラスに Student という名前を付ける場合、このクラスを定義するファイルの名前は Student.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 

パラメータ
className:Class — クラスの完全修飾名です。


次の例では、Plant という名前のクラスを作成しています。Plant コンストラクタは 2 つのパラメータを受け取ります。
// Filename Plant.as 
package {
  public class Plant { 
    // Define property names and types 
    private var _leafType:String; 
    private var _bloomSeason:String; 
    // Following line is constructor 
    // because it has the same name as the class 
    public function Plant(param_leafType:String, param_bloomSeason:String) { 
        // Assign passed values to properties when new Plant object is created 
        _leafType = param_leafType; 
        _bloomSeason = param_bloomSeason; 
    } 
    // Create methods to return property values, because best practice 
    // recommends against directly referencing a property of a class 
    public function get leafType():String { 
        return _leafType; 
    } 
    public function get bloomSeason():String { 
        return _bloomSeason; 
    } 
  }
}
スクリプトで、new 演算子を使用して Plant オブジェクトを作成します。
var pineTree:Plant = new Plant("Evergreen", "N/A"); 
// Confirm parameters were passed correctly 
trace(pineTree.leafType); 
trace(pineTree.bloomSeason); 

関連項目

constdefinition keyword 
使用法
const identifier = value 

定数 (値を 1 回だけ割り当てることができる変数) を指定します。

データ型の後にコロン (:) を付けて、厳密に定数を型指定できます。

パラメータ
identifier:* — 定数の識別子です。


次の例では、値を複数回定数に割り当てようとすると、エラーが発生することを示しています。
const MIN_AGE:int = 21;
MIN_AGE = 18; // error
次の例では、定数が配列である場合は、Array.push() を含む Array クラスメソッドを呼び出すことができることを示しています。ただし、新しい配列リテラルを割り当てることはできません。
const product_array:Array = new Array("Studio", "Dreamweaver", "Flash", "ColdFusion", "Contribute", "Breeze"); 
product_array.push("Flex"); // array operations are allowed
product_array = ["Other"];  // assignment is an error
trace(product_array); 

関連項目

continuestatement 
使用法
continue [label]

ループの終わりまで制御が通過したかのように、最も内側のループ内の残りのステートメントをすべてスキップして、ループの次の反復を開始します。continue ステートメントはループの外部では作用しません。ネストされたループでは、オプションの label パラメータを使用すると、最も内側のループ以外もスキップできます。

continue ステートメントには、オプションのラベルを指定できますが、このラベルは外側のステートメントのラベルと一致している必要があります。外側のステートメントのラベルと一致しないラベルを使用すると、シンタックスエラーが発生します。ラベル付きの continue ステートメントを使用すると、ネストされたループステートメントの複数のレベルをスキップできます。



次の while ループでは、continue ステートメントを使用して、3 の倍数が検出されたときにループ本体の残りをスキップして、ループの上端にジャンプし、条件を再度評価します。
var i:int = 0; 
while (i < 10) { 
    if (i % 3 == 0) { 
        i++; 
        continue; 
    } 
    trace(i); 
    i++; 
}

for ループでは、continue ステートメントを使用して、ループ本体の残りをスキップできます。次の例では、i % 30 が等しい場合、trace(i) ステートメントはスキップされます。

 
for (var i:int = 0; i < 10; i++) { 
    if (i % 3 == 0) { 
        continue; 
    } 
    trace(i); 
}

関連項目

defaultstatement 
使用法
default: statements 

switch ステートメントのデフォルトケースを定義します。このステートメントが実行されるのは、switch ステートメントの expression パラメータが、所定の switch ステートメントの case キーワードに続く expression パラメータと等しくない場合です (厳密な等価 [===] を使用)。

switch ステートメントに default ケースステートメントは必須ではありません。default ケースステートメントは、リストの最後に置く必要はありません。default ステートメントを switch ステートメントの外側で使用すると、エラーが発生し、スクリプトはコンパイルされません。

パラメータ
statements:* — 任意のステートメントです。


次の例では、曜日が土曜日または日曜日の場合、すべての case ステートメントが適用されず、default ステートメントが実行されます。
var dayOfWeek:int = new Date().getDay(); 
switch (dayOfWeek) { 
    case 1 : 
        trace("Monday"); 
        break; 
    case 2 : 
        trace("Tuesday"); 
        break; 
    case 3 : 
        trace("Wednesday"); 
        break; 
    case 4 : 
        trace("Thursday"); 
        break; 
    case 5 : 
        trace("Friday"); 
        break; 
    default : 
        trace("Weekend"); 
}

関連項目

default xml namespacedirective 
使用法

default xml namespace = ns

default xml namespace ディレクティブは、XML オブジェクトに使用するデフォルトの名前空間を設定します。

default xml namespace を設定しない場合、デフォルトの名前空間は名前のない名前空間となり、空のストリングに設定された URI が設定されます。default xml namespace 宣言のスコープは、変数のスコープと同じように関数ブロック内です。



次の例では、default xml namespace のスコープが関数ブロックであることを示しています。
var nsDefault1:Namespace = new Namespace("http://www.example.com/namespaces/");
default xml namespace = nsDefault1;
        
var x1:XML = <test1 />;
trace("x1 ns: " + x1.namespace());
            
scopeCheck();    

var x2:XML = <test2 />;
trace("x2 ns: " + x2.namespace());
        
function scopeCheck(): void {
    
    var x3:XML = <test3 />;
    trace("x3 ns: " + x3.namespace());
                
    var nsDefault2:Namespace = new Namespace("http://schemas.xmlsoap.org/soap/envelope/");
    default xml namespace = nsDefault2;
            
    var x4:XML = <test4 />;
    trace("x4 ns: " + x4.namespace());

}

この例の trace() 出力は次のようになります。

x1 ns: http://www.example.com/namespaces/
x3 ns: 
x4 ns: http://schemas.xmlsoap.org/soap/envelope/
x2 ns: http://www.example.com/namespaces/
次の例では、default xml namespace を使用して、デフォルトの名前空間を割り当てています。2 番目の XML オブジェクト (x2) は、x2 で自身のデフォルトの名前空間を定義しているため、この設定を使用しません。
var nsDefault:Namespace = new Namespace("http://www.example.com/namespaces/");
default xml namespace = nsDefault;
            
var x1:XML = <test1 />;

trace(x1.namespace());
    // http://www.example.com/namespaces/

var x2:XML = <test2 xmlns = "http://www.w3.org/1999/XSL/Transform/" />;
trace(x2.namespace());
    // http://www.w3.org/1999/XSL/Transform/

var x3:XML = <test3 xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" />;
trace(x3.namespace());
    // http://www.example.com/namespaces/

関連項目

do..whilestatement 
使用法
do { statement(s) } while (condition)

while ループに似ていますが、条件の最初の評価に先立ってステートメントが実行される点が異なります。その後、ステートメントは、条件が true と評価された場合にのみ実行されます。

do..while ループの場合、ループ内のコードは少なくとも 1 回は必ず実行されます。while ループを使用して、実行するステートメントのコピーを while ループの開始前に配置することで同じ操作を実現できますが、多くのプログラマは do..while ループの方が読みやすいと考えています。

条件が常に true と評価されると、do..while ループは無限ループになります。無限ループに陥ると、Flash Player に問題が発生し、警告メッセージが出力されたり、プレーヤーがクラッシュすることがあります。ループの回数がわかっている場合は、できる限り for ループを使用してください。for ループは読みやすくデバッグも簡単ですが、あらゆる状況で do..while ループの代わりとして使用できるわけではありません。

パラメータ
condition:Boolean — 評価する条件です。コードの do ブロック内の statement(s) は、condition パラメータの評価が true である限り実行されます。


次の例では、do..while ループを使用して条件が true かどうかを評価し、myVar が 5 以上になるまで myVar をトレースします。myVar が 5 以上になると、ループは終了します。
var myVar:Number = 0; 
do { 
    trace(myVar); 
    myVar++; 
} 
while (myVar < 5); 
/*
0 
1 
2 
3 
4
*/

関連項目

dynamicattribute keyword 
使用法
dynamic class className { // ここにクラス定義を記述 }

実行時に追加された dynamic プロパティをクラスのインスタンスで保有するよう指定します。クラスで dynamic 属性を使用する場合は、実行時にクラスのインスタンスにプロパティを追加できます。dynamic と指定されていないクラスは sealed と見なされます。sealed クラスのインスタンスには、プロパティを追加できません。

クラスが dynamic ではなく sealed の場合、クラスインスタンスでプロパティを取得または設定しようとすると、結果はエラーとなります。コンパイラを strict モードに設定し、インスタンスを作成するときにデータ型を指定する場合は、プロパティを sealed オブジェクトに追加しようとすると、コンパイラエラーまたはランタイムエラーが発生します。

dynamic 属性はサブクラスに継承されません。dynamic クラスを拡張した場合は、サブクラスで dynamic 属性を宣言した場合にのみサブクラスが dynamic になります。

メモ : このキーワードは、外部スクリプトファイルで使用する場合にのみサポートされ、[アクション] パネルに記述するスクリプトではサポートされません。



次の例では、2 つのクラスを作成します。1 つは Expando という名前の dynamic クラスで、もう 1 つは Sealed という名前の sealed クラスです。これらのクラスは後の例でも使用します。
package {

    dynamic class Expando  {
    }
    
    class Sealed {
    }
}
次のコードは、Expando クラスのインスタンスを作成し、このインスタンスにプロパティを追加できることを示しています。
var myExpando:Expando = new Expando();
myExpando.prop1 = "new";
trace(myExpando.prop1); // new
次のコードは、Sealed クラスのインスタンスを作成し、プロパティを追加しようとすると、結果がエラーとなることを示しています。
var mySealed:Sealed = new Sealed();
mySealed.prop1 = "newer"; // error

関連項目

elsestatement 
使用法
if (condition) { // ステートメント } else { // ステートメント }

if ステートメントの条件が false を返したときに実行するステートメントを指定します。実行するステートメントが 1 つしかない場合、else ステートメントで実行するステートメントを囲む中括弧 ({}) は必要ありません。

パラメータ
condition:Boolean — 評価結果が true または false になる式です。


次の例では、else 条件を使用して、age_txt 変数が 18 より大きいかまたは小さいかを判定しています。
if (age_txt.text>=18) { 
    trace("welcome, user"); 
} 
else { 
    trace("sorry, junior"); 
    userObject.minor = true; 
    userObject.accessAllowed = false;
}
次の例では、else ステートメントに続くステートメントが 1 つだけなので、中括弧 ({}) は必要ありません。
if (age_txt.text>18) { 
    trace("welcome, user");
} 
else trace("sorry, junior");
次の例では、if および else ステートメントを組み合わせて使用して、score_txt を指定された値と比較しています。

if (score_txt.text>90) { 
    trace("A"); 
} 
else if (score_txt.text>75) { 
    trace("B"); 
} 
else if (score_txt.text>60) { 
    trace("C"); 
} 
else { 
    trace("F"); 
}

関連項目

extendsdefinition keyword 
使用法
class className extends otherClassName {} interface interfaceName extends otherInterfaceName {} 

他のクラスのサブクラスとするクラスを定義します。サブクラスは、スーパークラスで定義されているメソッド、プロパティ、関数などをすべて継承します。final とマークされたクラスは拡張できません。

extends キーワードを使用して、インターフェイスを拡張することもできます。他のインターフェイスを拡張したインターフェイスには、元のインターフェイスのメソッド宣言がすべて含まれます。

メモ : このキーワードを使用するには、FLA ファイルの [パブリッシュ設定] ダイアログボックスの [Flash] タブで、ActionScript 2.0 および Flash Player 6 以降を指定する必要があります。このキーワードは、外部スクリプトファイルで使用する場合にのみサポートされ、[アクション] パネルに記述するスクリプトではサポートされません。

パラメータ
className:Class — 定義するクラスの名前です。


次の例の Car クラスは Vehicle クラスを拡張しているので、Vehicle クラスのすべてのメソッド、プロパティ、および関数を継承します。スクリプトで Car オブジェクトをインスタンス化すると、Car クラスのメソッドと Vehicle クラスのメソッドの両方を使用できます。

次の例では、Vehicle クラスを定義している "Vehicle.as" ファイルの内容を示します。

package {
    class Vehicle { 
        var numDoors:Number; 
        var color:String; 
        public function Vehicle(param_numDoors:Number = 2, param_color:String = null) { 
            numDoors = param_numDoors; 
            color = param_color; 
        } 
        public function start():void { 
            trace("[Vehicle] start"); 
        } 
        public function stop():void { 
            trace("[Vehicle] stop"); 
        } 
        public function reverse():void { 
            trace("[Vehicle] reverse"); 
        } 
    }    
}
次の例では、同じディレクトリ内にある 2 番目の ActionScript ファイル "Car.as" の内容を示します。このクラスは Vehicle クラスを拡張したクラスで、次のような 3 つの変更を行っています。Car クラスでは、最初に車オブジェクトにフルサイズのスペアタイヤが装着されているかどうかを追跡するための変数 fullSizeSpare を追加しています。2 番目に、車の盗難防止アラームをアクティブにする activateCarAlarm() を車に固有の新しいメソッドとして追加しています。3 番目に、Car クラスでは停車の際にアンチロックブレーキシステムを使用することを示すために、stop() 関数が上書きされています。
package {

    public class Car extends Vehicle { 
        var fullSizeSpare:Boolean; 
        public function Car(param_numDoors:Number, param_color:String, param_fullSizeSpare:Boolean) { 
            numDoors = param_numDoors; 
            color = param_color; 
            fullSizeSpare = param_fullSizeSpare; 
        } 
        public function activateCarAlarm():void { 
            trace("[Car] activateCarAlarm"); 
        } 
        public override function stop():void { 
            trace("[Car] stop with antilock brakes"); 
        } 
    }
}
次の例では、Car オブジェクトをインスタンス化し、Vehicle クラスに定義されているメソッド (start()) を呼び出します。次に Car クラスでオーバーライドされたメソッド (stop()) を呼び出し、最後に Car クラスのメソッド (activateCarAlarm()) を呼び出します。
var myNewCar:Car = new Car(2, "Red", true); 
myNewCar.start(); // [Vehicle] start 
myNewCar.stop(); // [Car] stop with anti-lock brakes 
myNewCar.activateCarAlarm(); // [Car] activateCarAlarm

サブクラスがスーパークラスのコンストラクタへのアクセスに使用する super ステートメントを使用して、Vehicle クラスのサブクラスを記述することもできます。次の例では、同じディレクトリ内にある 3 番目の ActionScript ファイル "Truck.as" の内容を示します。Truck クラスは、コンストラクタおよびオーバーライドされた reverse() メソッドで super を使用します。

package {
    class Truck extends Vehicle {
        var numWheels:Number;
        public function Truck(param_numDoors:Number, param_color:String, param_numWheels:Number) { 
            super(param_numDoors, param_color); 
            numWheels = param_numWheels; 
        } 
        public override function reverse():void { 
            beep();
            super.reverse();
        } 
        public function beep():void { 
            trace("[Truck] make beeping sound"); 
        } 
    }
}
次の例では、Truck オブジェクトをインスタンス化し、Truck クラスでオーバーライドされたメソッド (reverse()) を呼び出してから、Vehicle クラスで定義されているメソッド (stop()) を呼び出しています。
var myTruck:Truck = new Truck(2, "White", 18); 
myTruck.reverse(); // [Truck] make beeping sound [Vehicle] reverse 
myTruck.stop(); // [Vehicle] stop

関連項目

falseprimary expression keyword 
使用法
false

false を表すブール値です。ブール値は true または false のいずれかです。false の反対は true です。

自動的な型指定により false を数値に変換すると、その結果は 0 となります。false をストリングに変換すると、その結果は "false" となります。

メモ : ストリング "false" はブール値 true に変換されます。



次の例では、自動的な型指定によって false がどのような数値やストリングに変換されるかを示します。
var bool1:Boolean = Boolean(false);

// converts it to the number 0
trace(1 + bool1); // outputs 1

// converts it to a string
trace("String: " + bool1); // outputs String: false

次の例では、ストリング "false" がブール値 true に変換されることを示します。

trace(Boolean("false")); // true

if ("false") {
    trace("condition expression evaluated to true");
}
else {
    trace("condition expression evaluated to false");
}
// condition expression evaluated to true

関連項目

finalattribute keyword 
使用法
final function methodName() { // ここにステートメントを記述 } final class className {}

メソッドのオーバーライドまたはクラスの拡張を制限します。final と指定されたメソッドのオーバーライドや、クラスの拡張を試行すると、結果はエラーとなります。

パラメータ
methodName:Function — オーバーライドを制限するメソッドの名前です。
className:Class — 拡張を制限するクラスの名前です。

関連項目

flash_proxynamespace 

Proxy クラスのメソッドを定義します。Proxy クラスメソッドは自身の名前空間内にあり、Proxy クラスメソッド名と一致するインスタンスメソッド名が Proxy サブクラスに含まれる場合に、名前が競合しないようになっています。

関連項目

forstatement 
使用法
for ([init]; [condition]; [next]) { // ステートメント }

init (初期化) 式を 1 回だけ評価してから、ループシーケンスを開始します。ループシーケンスは、condition 式を評価することで開始されます。condition 式の評価結果が true の場合は、statement が実行され、next が評価されます。その後、condition 式の評価からループシーケンスが再び開始されます。

実行するステートメントが 1 つしかない場合、for ステートメントで実行するステートメントブロックを囲む中括弧 ({}) は必要ありません。

パラメータ
init — ループの開始前に評価される任意の式です。通常は代入式です。このパラメータに対して、var ステートメントを実行することもできます。
condition — ループの開始前に評価される任意の式です。通常は比較式です。式の評価結果が true の場合、for ステートメントに関連付けられているステートメントが実行されます。
next — ループシーケンスの後に評価される任意の式です。通常はインクリメント式またはデクリメント式です。


次の例では、for を使用して配列のエレメントを追加します。
var my_array:Array = new Array(); 
for (var i:Number = 0; i < 10; i++) { 
    my_array[i] = (i + 5) * 10;  
} 
trace(my_array); // 50,60,70,80,90,100,110,120,130,140 
次の例では、for を使用して同じアクションを繰り返し実行します。次のコードでは、for ループにより 1 から 100 の数値を加算します。
var sum:Number = 0; 
for (var i:Number = 1; i <= 100; i++) { 
    sum += i; 
} 
trace(sum); // 5050
次の例では、実行するステートメントが 1 つしかない場合は、中括弧 ({}) を付ける必要がないことを示しています。
var sum:Number = 0; 
for (var i:Number = 1; i <= 100; i++) 
    sum += i; 
trace(sum); // 5050

関連項目

for..instatement 
使用法
for (variableIterant:String in object){ // ステートメント } 

オブジェクトの動的プロパティまたは配列のエレメントに対して反復処理を行い、各プロパティまたはエレメントに対して statement を実行します。for..in ステートメントでは、クラスに定義された変数やメソッドなどの固定プロパティは列挙されません。固定プロパティのリストを取得するには、flash.utils パッケージにある describeType() 関数を使用します。

パラメータ
variableIterant:String — 反復子として動作し、オブジェクトのプロパティまたは配列内のエレメントを参照する変数の名前です。


次の例では、for..in を使用してオブジェクトのプロパティに対して反復処理を行います。
var myObject:Object = {firstName:"Tara", age:27, city:"San Francisco"}; 
for (var prop in myObject) { 
    trace("myObject."+prop+" = "+myObject[prop]); 
} 
/*
myObject.firstName = Tara 
myObject.age = 27 
myObject.city = San Francisco
*/
次の例では、for..intypeof 演算子を使用して、特定の型の子に対して反復処理を行います。
var myObject:Object = {firstName:"Tara", age:27, city:"San Francisco"}; 
for (var name in myObject) { 
    if (typeof (myObject[name]) == "string") { 
        trace("I have a string property named "+name); 
    } 
}
/*
I have a string property named city
I have a string property named firstName
*/

関連項目

for each..instatement 
使用法
for each (variableIterant in object){ // ステートメント } 

コレクションのアイテムに対して反復処理を行い、各アイテムに対して statement を実行します。E4X の言語拡張の一部として導入された for each..in ステートメントは、XML オブジェクトだけでなくオブジェクトや配列にも使用できます。for each..in ステートメントは、固定プロパティではなくオブジェクトの動的プロパティを介してのみ反復処理を行います。固定プロパティは、クラス定義の一部として定義されるプロパティです。ユーザー定義クラスのインスタンスで for each..in ステートメントを使用するには、クラスの属性を dynamic と宣言する必要があります。

for..in ステートメントと異なり、for each..in ステートメントは、プロパティ名ではなくオブジェクトのプロパティの値に対して反復処理を行います。

パラメータ
variableIterant:* — 反復子として動作し、コレクションのアイテムを参照する変数の名前です。
object:Object — 反復処理を行うコレクションの名前です。コレクションは、XML オブジェクト、汎用オブジェクト、または配列とすることができます。


次の例では、for each..in を使用して、オブジェクトのプロパティで保持される値に対して反復処理を行います。
var myObject:Object = {firstName:"Tara", age:27, city:"San Francisco"}; 
for each (var item in myObject) { 
    trace(item); 
} 
/*
Tara
27
San Francisco
*/
次の例では、for each..in を使用して、配列のエレメントに対して反復処理を行います。
var myArray:Array = new Array("one", "two", "three"); 
for each(var item in myArray) 
    trace(item); 
/*
one
two
three
*/
次の例では、for each..inis 演算子を使用して、特定の型の子に対して反復処理を行います。
var myObject:Object = {firstName:"Tara", age:27, city:"San Francisco"}; 
for each (var item in myObject) { 
    if (item is String) {  
        trace("I have a string property with value " + item); 
    } 
}

/*
I have a string property with value Tara
I have a string property with value San Francisco
*/
次の例では、for each..in を使用して、XMLList オブジェクトのプロパティ (doc.p) に対して反復処理を行います。
var doc:XML = 
        <body>
            <p>Hello</p>
            <p>Hola</p>
            <hr />
            <p>Bonjour</p>
        </body>;
for each (var item in doc.p) {
    trace(item);
}

/*
Hello
Hola
Bonjour
*/

関連項目

functiondefinition keyword 
使用法
function functionName([parameter0, parameter1,...parameterN]) : returnType{ // ステートメント } var functionName:Function = function ([parameter0, parameter1,...parameterN]) : returnType{ // ステートメント } 

特定のタスクを実行するよう定義した一連のステートメントで構成されます。ある位置で関数を定義し、SWF ファイルの異なるスクリプトからその関数を呼び出すことができます。関数を定義する場合、その関数のパラメータも指定できます。パラメータは、関数が処理する値のプレースホルダーです。関数を呼び出すたびに異なるパラメータを渡すことができます。これにより、1 つの関数を異なる状況で再利用できます。

関数で値を生成する、つまり値を返すには、関数の statement(s) ブロックで return ステートメントを使用します。

シンタックス 1: function キーワードを使用して、関数名、パラメータ、およびステートメントを指定した関数を定義できます。スクリプトによって関数が呼び出されると、関数定義内のステートメントが実行されます。関数は前方参照が許されます。つまり、同じスクリプト内では、関数を呼び出す箇所よりも後に関数を宣言できます。関数定義は、同じ関数の以前の定義を置き換えます。ステートメントが許されている場所であれば、どこでもこのシンタックスを使用できます。

シンタックス 2: function を使用して、匿名関数を作成し、この関数への参照を返すこともできます。このシンタックスは式の中で使用され、特にオブジェクト内にメソッドを組み込む場合に便利です。

さらに、関数定義内で arguments オブジェクトを使用することができます。一般に、arguments オブジェクトは、可変数のパラメータを受け取る関数や再帰的な匿名関数を作成する場合に使用します。

パラメータ
functionName:Function — 新しい関数の名前です。
returnType:* — 戻り値のデータ型です。


次の例では、平方数の値を返す関数 sqr を定義します。
function sqr(xNum:Number) { 
    return Math.pow(xNum, 2); 
} 
var yNum:Number = sqr(3); 
trace(yNum); // 9
同じスクリプト内で関数を定義して使用する場合は、関数の使用箇所の後に関数定義を記述することができます。
var yNum:Number = sqr(3); 
trace(yNum); // 9 
function sqr(xNum:Number) { 
    return Math.pow(xNum, 2); 
}

関連項目

getdefinition keyword 
使用法
function get property() : returnType{ // ここにステートメントを記述 }

プロパティと同じように読み取り可能なメソッドである getter を定義します。getter は特別な関数で、var または const キーワードで宣言されたプロパティの値を返します。他のメソッドとは異なり、getter の呼び出しには括弧 (()) を使用しないため、変数のように見えます。

getter では、プライベートプロパティにパブリックインターフェイスを作成して、非表示の情報の規則を適用できます。情報を非表示にすると、基になるプライベートプロパティの実装が変更された場合でも、パブリックインターフェイスを変更する必要がないというメリットがあります。

getter には、サブクラス内でオーバーライドできるというメリットもあります。var または const で宣言されたプロパティはオーバーライドできません。

getter は、setter と組み合わせて、読み取り / 書き込み可能なプロパティを作成できます。読み取り専用プロパティを作成するには、対応する setter なしで getter を作成します。書き込み専用プロパティを作成するには、対応する getter なしで setter を作成します。

メモ : このキーワードを使用するには、FLA ファイルの [パブリッシュ設定] ダイアログボックスの [Flash] タブで、ActionScript 2.0 および Flash Player 6 以降を指定する必要があります。このキーワードは、外部スクリプトファイルで使用する場合にのみサポートされ、[アクション] パネルに記述するスクリプトではサポートされません。

パラメータ
property:*get がアクセスするプロパティの識別子です。この値は対応する set コマンドで使用される値と同じである必要があります。
returnType:* — 戻り値のデータ型です。


次の例では、Team クラスを定義しています。Team クラスには、クラス内のプロパティを取得および設定するための getter および setter メソッドがあります。
package {
    public class Team { 
        var teamName:String; 
        var teamCode:String; 
        var teamPlayers:Array = new Array(); 
        public function Team(param_name:String, param_code:String) { 
            teamName = param_name; 
            teamCode = param_code; 
        } 
        public function get name():String { 
            return teamName; 
        } 
        public function set name(param_name:String):void { 
            teamName = param_name; 
        }
    } 
}
スクリプトに次のコードを入力します。
var giants:Team = new Team("San Fran", "SFO"); 
trace(giants.name); 
giants.name = "San Francisco"; 
trace(giants.name); 
/*
San Fran San Francisco */

giants.name をトレースする際に、getter メソッドを使用してプロパティの値を返しています。

関連項目

ifstatement 
使用法
if (condition) { // ステートメント }

条件を評価して、次のステートメントを実行するかどうかを判定します。条件が true の場合は、条件に続く中括弧 ({}) 内のステートメントが実行されます。条件が false の場合は、中括弧内のステートメントをスキップし、中括弧の後のステートメントが実行されます。スクリプト内に分岐処理を作成するには、if ステートメントと else ステートメントを組み合わせます。

実行するステートメントが 1 つしかない場合、if ステートメントで実行するステートメントを囲む中括弧 ({}) は必要ありません。

パラメータ
condition:Boolean — 評価結果が true または false になる式です。

関連項目

implementsdefinition keyword 
使用法
myClass implements interface01 [, interface02 , ...] 

クラスでインターフェイスを実装するかどうかを指定します。クラスでインターフェイスを実装する場合、インターフェイスで宣言されているすべてのメソッドをクラスで定義する必要があります。インターフェイスを実装するクラスのインスタンスは、インターフェイスが定義するデータ型のメンバーと見なされます。このため、is 演算子は、最初のオペランドがクラスインスタンスで、次のオペランドがインターフェイスとなっており、さらに、データ型の強制型変換がインターフェイス操作で定義されている場合に true を返します。

メモ : このキーワードを使用するには、FLA ファイルの [パブリッシュ設定] ダイアログボックスの [Flash] タブで、ActionScript 2.0 および Flash Player 6 以降を指定する必要があります。このキーワードは、外部スクリプトファイルで使用する場合にのみサポートされ、[アクション] パネルに記述するスクリプトではサポートされません。

関連項目

importdirective 
使用法
import packageName.className import packageName.*

外部で定義されたクラスおよびパッケージをコードで使用できるようにします。たとえば、スクリプトで flash.display.Sprite クラスを使用する場合は、これを読み込む必要があります。import ディレクティブはオプションだったため、この要件は以前のバージョンの ActionScript とは異なります。

import ディレクティブを使用した後は、パッケージ名を含む完全なクラス名かクラス名のみのいずれかを使用できます。

 
import flash.display.Sprite; 

// name of class only
var mySprite:Sprite = new Sprite();

// full class name
var mySprite:flash.display.Sprite = new flash.display.Sprite();

アクセス対象のクラスがパッケージ内に複数存在する場合は、次の例に示すように、1 つのステートメントですべてのクラスを読み込むことができます。

import flash.display.*;

import ディレクティブは、読み込んだパッケージの最上位レベルにあるクラス、関数、および変数のみを読み込みます。ネストされたパッケージは明示的に読み込む必要があります。

読み込んだクラスをスクリプト内で使用しない場合、そのクラスは SWF ファイルには出力されません。したがって、SWF ファイルのサイズを気にすることなく、大きなパッケージを読み込むことができます。クラスに関連付けられたバイトコードは、実際に使用された場合のみ、SWF ファイルに含められます。必要のないクラスを読み込むと、名前の競合が起こりやすくなるというデメリットがあります。

import ディレクティブは、それを呼び出している現在のスクリプト (フレームまたはオブジェクト) にのみ適用されます。たとえば、adobe.example パッケージのすべてのクラスを Flash ドキュメントのフレーム 1 に読み込んだと仮定します。そのフレームでは、そのパッケージ内のクラスを簡単な名前で参照できます。

// FLA のフレーム 1 で次を実行します : import adobe.example.*; var myFoo:foo = new foo();

ただし、他のフレームのスクリプトでは、そのパッケージのクラスを完全修飾名 (var myFoo:foo = new adobe.example.foo();) で参照するか、そのパッケージのクラスを読み込む他のフレームに import ディレクティブを追加する必要があります。

パラメータ
packageName:* — 別のクラスファイルで定義したパッケージの名前です。
className:Class — 別のクラスファイルで定義したクラスの名前です。

関連項目

includedirective 
使用法
include "[path]filename.as"

指定したファイル内のコマンドを呼び出し元のスクリプトにインクルードし、そのスクリプトの一部であるかのように扱います。include ディレクティブは、コンパイル時に呼び出されます。このため、インクルードファイルに何らかの変更を行った場合は、ファイルを保存し、ファイルを使用する SWF ファイルを再コンパイルする必要があります。

関連項目

interfacedefinition keyword 
使用法
 interface InterfaceName [extends InterfaceName ] {}

インターフェイスを定義します。インターフェイスとは、メソッドのセットを定義するデータ型です。このメソッドは、インターフェイスを実装するすべてのクラスで定義される必要があります。

インターフェイスはクラスに似ていますが、次に示す重要な違いがあります。

ActionScript 2.0 とは異なり、ActionScript 3.0 ではインターフェイス定義で getter および setter メソッドを使用できます。

メモ : このキーワードを使用するには、FLA ファイルの [パブリッシュ設定] ダイアログボックスの [Flash] タブで、ActionScript 2.0 および Flash Player 6 以降を指定する必要があります。このキーワードは、外部スクリプトファイルで使用する場合にのみサポートされ、[アクション] パネルに記述するスクリプトではサポートされません。

関連項目

internalattribute keyword 
使用法
[internal] var varName [internal] const kName [internal] function functionName()  { // ここにステートメントを記述 } [internal] class className{ // ここにステートメントを記述 } [internal] namespace nsName

クラス、変数、定数、または関数に同じパッケージ内のすべての呼び出し元からアクセスできるよう指定します。デフォルトでは、クラス、プロパティ、およびメソッドは internal 名前空間に属します。

パラメータ
className:Class — internal として指定するクラスの名前です。
varName:* — internal として指定する変数の名前です。internal 属性は、変数がクラスの一部かどうかに関わらず適用できます。
kName:* — internal として指定する定数の名前です。internal 属性は、定数がクラスの一部かどうかに関わらず適用できます。
functionName:Function — internal として指定する関数またはメソッドの名前です。internal 属性は、関数がクラスの一部かどうかに関わらず適用できます。
nsName:Namespace — internal として指定する名前空間の名前です。internal 属性は、名前空間がクラスの一部かどうかに関わらず適用できます。

関連項目

labelstatement 
使用法
label: statement label: { ステートメント }

ステートメントを break または continue で参照可能な識別子と関連付けます。ネストされたループでは、ラベルを参照しない break または continue ステートメントは、そのループの残りの部分のみスキップし、一連のループはスキップしません。ただし、一連のループを定義するステートメントに関連付けられたラベルがある場合、break または continue ステートメントはこのラベルを参照することにより、一連のループをスキップできます。

また、ラベルによりブロックステートメントを終了することもできます。ブロックステートメントがループの一部である場合以外は、ラベルを参照しない break ステートメントをブロックステートメント内に配置することはできません。ブロックステートメントに関連付けられたラベルがある場合は、このラベルを参照する break ステートメントをブロックステートメント内に配置できます。

パラメータ
label:* — ステートメントに関連付ける有効な識別子です。
statements:* — ラベルに関連付けるステートメントです。


次の例では、ネストされたループでラベルを使用して、一連のループを終了する方法を示します。コードは、ネストされたループを使用して、0 から 99 までの数値のリストを生成します。break ステートメントはカウントが 80 に到達する直前で発生します。break ステートメントで outerLoop ラベルが使用されなかった場合は、そのループの残りの部分のみスキップし、引き続き 90 から 99 までの数値を出力します。ただし、outerLoop ラベルが使用された場合、break ステートメントは一連のループをスキップし、最後に出力される数値は 79 になります。
outerLoop: for (var i:int = 0; i < 10; i++) {
    for (var j:int = 0; j < 10; j++) {
        if ( (i == 8) && (j == 0)) {
            break outerLoop;
        }
        trace(10 * i + j);
    }
}
/*
1
2
...
79
*/

次の例では、ブロックステートメントでのラベルの使用方法を示します。ブロックステートメントには foo ラベルが付けられ、break ステートメントはブロック内の最後のステートメントをスキップできます。

foo: {
    trace("a");
    break foo;
    trace("b");
}
// a

関連項目

namespacedefinition keyword 
使用法
namespace name [= uri]

定義の可視性を制御できます。定義済みの名前空間には、publicprivateprotected、および internal があります。

次に、名前空間を作成、適用、参照する手順を示します。

パラメータ
name:Namespace — 名前空間の名前です。有効な識別子を使用できます。
uri:String — 名前空間の URI です。このパラメータはオプションです。

関連項目

nativeattribute keyword 
使用法
native function functionName(); class className { native function methodName(); }

Flash Player がネイティブコードで関数またはメソッドを実装するよう指定します。Flash Player では、native キーワードを内部的に使用して、ActionScript アプリケーションプログラミングインターフェイス (API) で関数およびメソッドを宣言します。このキーワードは、独自に作成するコードでは使用できません。  

nullprimary expression keyword 
使用法
ヌル (null)

変数に割り当てることができる特別な値、またはデータがない場合に関数から返される特殊な値です。null は、存在しない、または定義されていないデータ型を表す値として使用されます。

null 値は特殊な値 undefined と混同しないようにしてください。nullundefined を等価演算子 (==) で比較すると、結果は true になります。ただし、nullundefined を厳密な等価演算子 (===) で比較すると、結果は false になります。



次の例では、インデックスの付いた配列の最初の 6 つの値をチェックし、値が指定されていない (value == null) 場合は、メッセージを出力します。

var testArray:Array = new Array();
testArray[0] = "fee";
testArray[1] = "fi";
testArray[4] = "foo";

for (i = 0; i < 6; i++) {
    if (testArray[i] == null) {
        trace("testArray[" + i + "] == null");
    }
}

/* 
testArray[2] == null
testArray[3] == null
testArray[5] == null
*/

関連項目

object_proxynamespace 

ObjectProxy クラスのメソッドを定義します。ObjectProxy クラスメソッドは自身の名前空間内にあり、Proxy クラスメソッド名と一致するインスタンスメソッド名が Proxy サブクラスに含まれる場合に、名前が競合しないようになっています。

overrideattribute keyword 
使用法
override function name() { // ここにステートメントを記述 }

メソッドで継承したメソッドを置き換えるよう指定します。継承したメソッドをオーバーライドするには、override 属性を使用する必要があります。名前、数値、パラメータの型、および戻り値の型は完全に一致する必要があります。override 属性を使用せずにメソッドをオーバーライドしようとするとエラーが発生します。同様に、メソッドに一致する継承されたメソッドがない場合に、override 属性を使用するとエラーが発生します。

次の場所で override 属性を使用することはできません。

var または const で宣言されたプロパティをオーバーライドすることはできませんが、基本クラスのプロパティを getter-setter とし、get および set で定義されたメソッドをオーバーライドすることで、同様の機能を実現することができます。

パラメータ
name:Function — オーバーライドするメソッドの名前です。

関連項目

packagedefinition keyword 
使用法
package packageName { class someClassName { } }

他のスクリプトから読み込んだ個別のグループにコードを分類できます。クラスがパッケージのメンバーであることを示すには、package キーワードを使用する必要があります。

パラメータ
packageName:* — パッケージの名前です。

関連項目

privateattribute keyword 
使用法
class className{ private var varName; private const kName; private function methodName() { // ここにステートメントを記述 } private namespace nsName; }

変数、定数、またはメソッドを宣言または定義したクラスからのみアクセスできるよう指定します。ActionScript 2.0 とは異なり、ActionScript 3.0 の private ではサブクラスへのアクセスも制限されます。さらに、private ではコンパイル時および実行時の両方でアクセスが制限されます。デフォルトでは、同じパッケージにある呼び出し元は変数または関数にアクセスできます。このキーワードは、変数や関数へのアクセスを制限する場合に使用します。

このキーワードは、クラス定義でのみ使用できます。インターフェイス定義では使用できません。private は、クラスまたはその他のすべてのパッケージレベルの定義には適用できません。

パラメータ
varName:* — private として指定する変数の名前です。private 属性は、変数がクラス内にある場合のみ適用できます。
kName:* — private として指定する定数の名前です。private 属性は、定数がクラス内にある場合のみ適用できます。
methodName:Function — private として指定するメソッドの名前です。private 属性は、メソッドがクラス内にある場合のみ適用できます。
nsName:Namespace — private として指定する名前空間の名前です。private 属性は、名前空間がクラス内にある場合のみ適用できます。


次の例では、private キーワードを使用して、クラス内の特定のプロパティを非表示にする方法について説明します。
class A { 
  private var alpha:String = "visible only inside class A"; 
  public var beta:String = "visible everywhere"; 
}
    
class B extends A {
  function B() {
    alpha = "Access attempt from subclass"; // error
  }
}

alpha はプライベート変数であるため、A クラスの外部やサブクラス B からもアクセスできません。プライベート変数にアクセスしようとすると、エラーが発生します。

関連項目

protectedattribute keyword 
使用法
class className{ protected var varName; protected const kName; protected function methodName() { // ここにステートメントを記述 } protected namespace nsName; }

変数、定数、メソッド、または名前空間を定義したクラスとそのサブクラスからのみアクセスできるよう指定します。ActionScript 3.0 の protected の定義は、ActionScript 2.0 の private と似ていますが、protected ではコンパイル時および実行時の両方でアクセスが制限される点が異なります。デフォルトでは、同じパッケージにある呼び出し元は変数または関数にアクセスできます。このキーワードは、変数や関数へのアクセスを制限する場合に使用します。

このキーワードは、クラス定義でのみ使用できます。インターフェイス定義では使用できません。private は、クラスまたは他のすべてのパッケージレベルの定義には適用できません。

ActionScript 3.0 の protected の定義には、Java プログラミング言語の protected より多くの制限があります。ActionScript 3.0 の protected ではサブクラスへのアクセスが厳密に制限されますが、Java の protected では同じパッケージ内のすべてのクラスへのアクセスが許可されます。たとえば、Base という名前のクラスに protected と指定されたプロパティが含まれる場合、ActionScript 3.0 では Base の拡張クラスのみが保護されたプロパティにアクセスできます。Java では、Base と同じパッケージにあるすべてのクラスが保護されたプロパティにアクセスでき、Base のサブクラスでない場合も同様です。

パラメータ
varName:* — protected として指定する変数の名前です。protected 属性は、変数がクラス内にある場合のみ適用できます。
kName:* — protected として指定する定数の名前です。protected 属性は、定数がクラス内にある場合のみ適用できます。
methodName:Function — protected として指定するメソッドの名前です。protected 属性は、メソッドがクラス内にある場合のみ適用できます。
nsName:Namespace — protected として指定する名前空間の名前です。protected 属性は、名前空間がクラス内にある場合のみ適用できます。


次の例では、クラス A で保護されたクラス変数を作成し、クラス A のサブクラスであるクラス B からその変数に正常にアクセスしています。
class A { 
  private var alpha:String = "visible only inside class A"; 
  protected var beta:String = "visible inside class A and its subclasses"; 
}
    
class B extends A {
  public function B() {
    beta = "Access attempt from subclass succeeded";
    trace(beta);  // Access attempt from subclass succeeded
  }
}

関連項目

publicattribute keyword 
使用法
public var varName public const kName public function functionName()  { // ここにステートメントを記述 } public class className { // ここにステートメントを記述 } public namespace nsName

クラス、変数、定数、またはメソッドにすべての呼び出し元からアクセスできるよう指定します。クラス、変数、およびメソッドはデフォルトでは内部クラスです。つまり、現在のパッケージ内にのみ表示されます。クラス、変数、またはメソッドにすべての呼び出し元からアクセスできるようにするには、public 属性を使用する必要があります。

パラメータ
className:Class — public として指定するクラスの名前です。
varName:* — public として指定する変数の名前です。public 属性は、変数がクラスの一部かどうかに関わらず適用できます。
kName:* — public として指定する定数の名前です。public 属性は、定数がクラスの一部かどうかに関わらず適用できます。
functionName:Function — public として指定する関数またはメソッドの名前です。public 属性は、関数がクラスの一部かどうかに関わらず適用できます。
nsName:Namespace — public として指定する名前空間の名前です。public 属性は、名前空間がクラスの一部かどうかに関わらず適用できます。


次の例では、クラスファイルでパブリック変数を使用する方法を示します。
class User { 
    public var age:Number; 
    public var fname:String; 
} // end of class User definition
 
var jimmy:User = new User(); 
jimmy.age = 27; 
jimmy.fname = "jimmy";
trace(jimmy.age, jimmy.fname); // 27 jimmy

User クラスのいずれかのパブリック変数をプライベート変数に変更した場合、User クラスの外から変数にアクセスしようとすると、コンパイル時エラーが生成されます。

関連項目

returnstatement 
使用法
function functionName () { return [expression] }

実行を呼び出し元の関数に直ちに返します。return ステートメントの後に式が続く場合は、式が評価されて結果が返されます。

関数の定義に戻り値の型が含まれている場合は、return ステートメントの後に式を続ける必要があります。戻り値の型が指定されておらず、return ステートメントが単独で使用されている場合は、undefined を返します。

複数の値を取得することはできません。複数の値を取得しようとした場合は、最後の値だけが返されます。次の例では、c が返されます。

return a, b, c ;

複数の値を取得する必要がある場合は、代わりに配列またはオブジェクトを使用します。

パラメータ
expression:* — 評価を行い関数の値として返す式です。このパラメータはオプションです。

結果
*expression パラメータの評価 (指定されている場合) です。


次の例では、sum() 関数の本体内で return ステートメントを使用し、3 つのパラメータの加算結果を返します。コードの 2 行目で sum() 関数を呼び出し、戻り値を変数 newValue に割り当てます。
function sum(a:Number, b:Number, c:Number):Number { 
    return (a + b + c); 
} 
var newValue:Number = sum(4, 32, 78); 
trace(newValue); // 114

関連項目

setdefinition keyword 
使用法
function set property(newValue:*) : void{ // ここにステートメントを記述 }

パブリックインターフェイスでプロパティとして表示されるメソッドである setter を定義します。setter は特別なメソッドで、var キーワードで宣言されたプロパティの値を設定します。他のメソッドとは異なり、setter の呼び出しには括弧 (()) を使用しないため、変数のように見えます。

setter では、プライベートプロパティにパブリックインターフェイスを作成して、非表示の情報の規則を適用できます。情報を非表示にすると、基になるプライベートプロパティの実装が変更された場合でも、パブリックインターフェイスを変更する必要がないというメリットがあります。

setter には、サブクラス内でオーバーライドできるというメリットもあります。var で宣言されたプロパティはオーバーライドできません。

setter の戻り値の型は、void または指定なしのいずれかである必要があります。

setter は、getter と組み合わせて、読み取り / 書き込み可能なプロパティを作成できます。読み取り専用プロパティを作成するには、対応する setter なしで getter を作成します。書き込み専用プロパティを作成するには、対応する getter なしで setter を作成します。

メモ : このキーワードは、外部スクリプトファイルで使用する場合にのみサポートされ、[アクション] パネルに記述するスクリプトではサポートされません。

パラメータ
property:*set が修正するプロパティの識別子です。この値は対応する get コマンドで使用される値と同じである必要があります。
newValue:* — 割り当てる新しい値です。


次の例では、getter-setter を定義して、age という名前の読み取り / 書き込み可能なプロパティを作成しています。
package {
    class User { 
        private var userAge:Number; 
        
        public function get age():Number {
            return userAge;
        }
        
        public function set age(x:Number):void {
            userAge = x;    
        }
    } 
} 
スクリプトに次のコードを入力します。
var myUser:User = new User();
myUser.age = 25;
trace(myUser.age); // 25

関連項目

staticattribute keyword 
使用法
class someClassName{ static var varName; static const kName; static function methodName() { // ここにステートメントを記述 } }

変数、定数、またはメソッドがクラスのインスタンスではなくクラスに属するよう指定します。

静的クラスメンバーにアクセスするには、インスタンス名の代わりにクラス名を使用します。たとえば、Date クラスにある parse() という名前の静的メソッドは、次のシンタックスでのみ呼び出すことができます。

Date.parse()

parse() メソッドは、Date クラスのインスタンスで呼び出すことはできません。たとえば、次のコードではエラーが発生します。

var myDate:Date = new Date();
			myDate.parse("Jan 01 00:00:00 2006"); // error

static は、クラス定義でのみ使用できます。インターフェイス定義では使用できません。

静的クラスメンバーは継承されません。Java や C++ のように、サブクラス名を使用して静的クラスメンバーを参照することはできません。ただし、修飾子を使用せずに、クラスまたはサブクラス内の静的変数またはメソッドを参照できます。次の例を参照してください。

静的メソッド内では、super ステートメントまたは this キーワードは使用できません。

メモ : このキーワードは、外部スクリプトファイルで使用する場合にのみサポートされ、[アクション] パネルに記述するスクリプトではサポートされません。

パラメータ
varName:* — static として指定する変数の名前。
kName:* — static として指定する定数の名前です。
methodName:Function — static として指定するメソッドの名前です。


次の例では、static キーワードを使用して、作成されたクラスのインスタンス数を追跡するカウンタを作成する方法を示します。numInstances は静的変数なので、個々のインスタンスごとに作成されるのではなく、クラス全体で 1 回のみ作成されます。"Users.as" という新しい ActionScript ファイルを作成し、次のコードを入力します。
class Users { 
    private static var numInstances:Number = 0; 
    function Users() { 
        numInstances++; 
    } 
    static function get instances():Number { 
        return numInstances; 
    } 
}
スクリプトに次のコードを入力します。
trace(Users.instances); 
var user1:Users = new Users(); 
trace(Users.instances); 
var user2:Users = new Users(); 
trace(Users.instances); 
次の例では、Users クラスを拡張して、静的変数およびメソッドは継承されないものの、サブクラスで参照できることを示しています。
class PowerUsers extends Users{
    function PowerUsers() {
        instances++;  // unqualified reference to static property Users.instances is legal
    }
}

trace(PowerUsers.instances); // error, cannot access static property using PowerUsers class

関連項目

superstatement 
使用法
super([arg1, ..., argN]) super.method([arg1, ..., argN])

メソッドやコンストラクタのスーパークラスまたは親バージョンを呼び出します。クラスコンストラクタの本体内で使用する場合、super() ステートメントはコンストラクタのスーパークラスバージョンを呼び出します。スーパークラスコンストラクタの呼び出しには、正しい数の引数が指定されている必要があります。スーパークラスコンストラクタは、明示的に呼び出すかどうかに関わらず、必ず呼び出されます。明示的に呼び出さない場合、呼び出しは引数なしでサブクラスのコンストラクタ本体の最初のステートメントの前に自動的に挿入されます。つまり、サブクラスでコンストラクタ関数を定義し、スーパークラスコンストラクタが引数を取る場合は、正しい数の引数を指定してスーパークラスコンストラクタを明示的に呼び出す必要があります。そうでない場合は、エラーが発生します。ただし、ActionScript 2.0 とは異なり、スーパークラスコンストラクタへの呼び出しは、サブクラスコンストラクタの最初のステートメントである必要はありません。

インスタンスメソッドの本体で使用する場合は、super をドット (.) パラメータと共に使用して、メソッドのスーパークラスバージョンを呼び出すことができます。また、オプションとしてスーパークラスメソッドに引数 (arg1 ... argN) を渡すこともできます。このスタイルは、スーパークラスのメソッドにビヘイビアを追加するだけでなく、そのメソッドを使用して元のビヘイビアを実行するようなサブクラスメソッドを作成する場合に便利です。

静的メソッドで super ステートメントを使用することはできません。

パラメータ
method:Function — スーパークラスで呼び出すメソッドです。
argN:* — メソッドのスーパークラスバージョンまたはスーパークラスのコンストラクタ関数に渡すオプションのパラメータです。

関連項目

switchstatement 
使用法
switch (expression) { caseClause: [defaultClause:] }

式の値に応じて、ステートメントへの転送を制御します。switch ステートメントには、どの case ステートメントも式に一致しない場合に実行するデフォルトケースを指定する必要があります。それぞれの case ステートメントは、break ステートメントで終了する必要があります。これにより、フォールスルーエラーを回避できます。フォールスルーエラーが発生すると、ケースがテスト式に一致しない場合でも、次の case ステートメントのコードが実行されます。

パラメータ
expression:* — 任意の式です。


次の例では、デフォルトケースにフォールスルーする switch ステートメントを定義します。

var switchExpression:int = 3;
        
switch (switchExpression) {
    case 0:
        trace(0);
        break;
    case 1:
        trace(1);
        break;
    case 2:
        trace(2);
        break;
    default:
        trace("Not 0, 1, or 2");
}

// Not 0, 1, or 2

関連項目

thisprimary expression keyword 
使用法
this

メソッドに含まれるオブジェクトへの参照です。スクリプトの実行時には、this キーワードはそのスクリプトを含むオブジェクトを参照します。メソッド本体内では、this キーワードは呼び出されたメソッドを含むクラスインスタンスを参照します。



ダイナミッククラスで定義された関数を呼び出すには、this を使用して適切なスコープで関数を呼び出す必要があります。
// incorrect version of Simple.as
/*
dynamic class Simple {
    function callfunc() {
        func();
    }
}
*/
// correct version of Simple.as
dynamic class Simple {
    function callfunc() {
        this.func();
    }
}
スクリプトに次のコードを追加します。
var simpleObj:Simple = new Simple();
simpleObj.func = function() {
    trace("hello there");
}
simpleObj.callfunc();
上記のコードは、callfunc() メソッドで this を使用した場合に機能します。ただし、不適切なバージョンの "Simple.as" を使用するとシンタックスエラーが発生し、上記の例ではコメントアウトされます。

関連項目

throwstatement 
使用法
throw expression 

catch コードブロックによって処理 (キャッチ) できるエラーを生成 (スロー) します。catch ブロックが例外をキャッチしない場合は、スローされた値のストリング表現が [出力] パネルに表示されます。catch または finally ブロックが例外をキャッチしない場合は、スローされた値のストリング表現がログファイルに記録されます。

一般には、Error クラスまたはそのサブクラスのインスタンスをスローします。「例」を参照してください。

パラメータ
expression:* — ActionScript の式またはオブジェクトです。


この例の checkEmail() 関数は、受け取ったストリングが正しい形式の電子メールアドレスかどうかを確認します。ストリングに "@" 記号が含まれていない場合は、エラーをスローします。
function checkEmail(email:String) { 
    if (email.indexOf("@") == -1) { 
        throw new Error("Invalid email address"); 
    } 
} 
checkEmail("someuser_theirdomain.com");
次に、以下のコードで try コードブロック内の同じ checkEmail() 関数を呼び出します。e-mail ストリングに有効な電子メールアドレスが含まれていない場合は、trace ステートメントでエラーメッセージが出力されます。
try { 
    checkEmail("Joe Smith"); 
} 
catch (e) { 
    trace(e); 
}
// Error: Invalid email address.
次の例では、Error クラスのサブクラスをスローします。checkEmail() 関数がそのサブクラスのインスタンスをスローするよう修正します。
// Define Error subclass InvalidEmailError 
class InvalidEmailAddress extends Error { 
    public function InvalidEmailAddress() {
        message = "Invalid email address."; 
    }
}
スクリプトに次のコードを入力します。
import InvalidEmailAddress; 
function checkEmail(email:String) { 
    if (email.indexOf("@") == -1) { 
        throw new InvalidEmailAddress(); 
    } 
} 
try { 
    checkEmail("Joe Smith"); 
} 
catch (e) { 
    trace(e);
}
// Error: Invalid email address.

関連項目

trueprimary expression keyword 
使用法
true

true を表すブール値です。ブール値は true または false のいずれかです。true の反対は false です。自動的な型指定により true を数値に変換すると、その結果は 1 となります。true をストリングに変換すると、その結果は "true" となります。



次の例では、if ステートメントで true を使用しています。

var shouldExecute:Boolean;
// ...
// code that sets shouldExecute to either true or false goes here
// shouldExecute is set to true for this example:

shouldExecute = true;

if (shouldExecute == true) {
    trace("your statements here");
}

// true is also implied, so the if statement could also be written:
// if (shouldExecute) {
//         trace("your statements here");
// }

次の例では、自動的な型指定によって true を数値 1 に変換する方法を示しています。


var myNum:Number;
myNum = 1 + true;
trace(myNum); // 2

関連項目

try..catch..finallystatement 
使用法
try { // try ブロック } finally { // finally ブロック } 

try { // try ブロック } catch(error[:ErrorType1]) { // catch ブロック } [catch(error[:ErrorTypeN]) { // catch ブロック }] [finally { // finally ブロック }]

エラーが発生する可能性のあるコードブロックを囲み、そのエラーに対処します。try..catch..finally ステートメントを使用して実装される例外処理は、ActionScript 3.0 でランタイムエラーの条件処理に使用される主要なメカニズムです。ランタイムエラーが発生すると、Flash Player は例外をスローして、通常の実行を一時停止し、Error 型の特殊なオブジェクトを作成します。次に、最初にアクセス可能な catch ブロックにエラーオブジェクトをパス (スロー) します。アクセス可能な catch ブロックがない場合、例外は不明な例外と見なされます。不明な例外が発生すると、スクリプトは終了します。

throw ステートメントを使用して、コードで例外を明示的にスローすることができます。任意の値をスローできますが、柔軟性があり Flash Player のビヘイビアに一致するオブジェクトをスローすることが推奨されます。

例外をキャッチするには、Flash Player または作成したコードでスローするかに関わらず、例外をスローするコードを try ブロックに配置します。try ブロック内のコードが例外をスローすると、制御は catch ブロックがある場合はこれに移動し、次に finally ブロックがある場合はこれに移動します。finally ブロックは、例外がスローされたかどうかに関わらず、必ず実行されます。try ブロック内のコードが例外をスローしなかった場合 (try ブロックが正常終了した場合)、catch ブロック内のコードは無視されますが、finally ブロック内のコードは実行されます。return ステートメントを使用して try ブロックを終了した場合でも、finally ブロックは実行されます。

try ブロックの後には、catch ブロックまたは finally ブロック、またはその両方を続ける必要があります。1 つの try ブロックに対して複数の catch ブロックを指定できますが、finally ブロックは 1 つしか記述できません。try ブロックは、必要なだけ何レベルでもネストできます。

catch ハンドラで指定する error パラメータには、etheException、または x のような単純な識別子を使用します。パラメータの型を指定することもできます。複数の catch ブロックを使用する場合は、型指定したパラメータを使用することで、1 つの try ブロックからスローされた複数の型のエラーオブジェクトをキャッチできます。

スローした例外がオブジェクトである場合、スローしたオブジェクトが指定した型のサブクラスであれば、型が一致します。特定の型のエラーがスローされた場合は、対応するエラーを処理する catch ブロックが実行されます。指定した型ではない例外がスローされた場合、catch ブロックは実行されず、try ブロックからそのエラーに一致する catch ハンドラに対して例外が自動的にスローされます。

関数の内部でエラーがスローされ、その関数に catch ハンドラが含まれていない場合、その関数は終了します。catch ブロックが見つからない限り、呼び出し元の関数もすべて終了します。このプロセスの間に、すべてのレベルの finally ハンドラが呼び出されます。

パラメータ
error:*throw ステートメントでスローされる式です。通常は Error クラスまたはそのサブクラスのインスタンスです。


次に、try..catch ステートメントの使用例を示します。try ブロック内のコードで無効な操作が指定されています。スプライトは自身を子として追加することはできません。このため、Flash Player は例外をスローし、ArgumentError 型のオブジェクトを対応する catch ブロックに渡します。
import flash.display.Sprite;

var spr:Sprite = new Sprite();
try {
    spr.addChild(spr);
}
catch (e:ArgumentError) {
    trace (e); // ArgumentError: Error #2024: An object may not be added as a child of itself.
}
次の例では、RecordSetException オブジェクトと MalformedRecord オブジェクトは Error クラスのサブクラスです。
class RecordSetException extends Error { 
    public function RecordSetException () {
        message = "Record set exception occurred."; 
    }
}

class MalformedRecord extends Error { 
    public function MalformedRecord {
        message = "Malformed record exception occurred."; 
    }
}
RecordSet クラスの sortRows() メソッドでは、発生した例外の型に応じて、これらの定義済みオブジェクトのいずれかをスローします。次に例を示します。
class RecordSet { 
    public function sortRows() { 
        var returnVal:Number = randomNum(); 
        if (returnVal == 1) { 
            throw new RecordSetException(); 
        } 
        else if (returnVal == 2) { 
            throw new MalformedRecord(); 
        } 
    }
    public function randomNum():Number { 
        return Math.round(Math.random() * 10) % 3; 
    }
}
最後に、次のコードでは RecordSet クラスのインスタンスで sortRows() メソッドを呼び出します。このコードでは、sortRows() でスローされるエラーオブジェクトの型ごとに、catch ブロックを定義しています。
import RecordSet; 
var myRecordSet:RecordSet = new RecordSet();
try { 
    myRecordSet.sortRows(); 
    trace("everything is fine"); 
} 
catch (e:RecordSetException) { 
    trace(e.toString()); 
} 
catch (e:MalformedRecord) { 
    trace(e.toString()); 
}

関連項目

use namespacedirective 
使用法
use namespace ns1[, ns2, ...nsN]

指定した名前空間をオープンな名前空間のセットに追加します。指定した名前空間は、現在のコードブロックが終了すると、オープンな名前空間のセットから削除されます。use namespace ディレクティブは、プログラム、パッケージ定義、またはクラス定義の最上位のレベルに表示できます。

パラメータ
nsN:Namespace — オープンな名前空間のセットに追加された名前空間です。

関連項目

vardefinition keyword 
使用法
var variableName [= value1][...,variableNameN[=valueN]] 

変数を指定します。関数内で変数を宣言した場合、その変数はローカルです。変数はその関数用に定義され、関数呼び出しの終了時にスコープから外れます。

関数外で変数を宣言した場合、その変数は、そのステートメントが含まれるタイムライン全体で使用できます。

別のオブジェクトのスコープ内の変数をローカル変数として宣言することはできません。

my_array.length = 25; // OK var my_array.length = 25; // シンタックスエラー 

データ型の後にコロンを付けて、変数にデータ型を割り当てることができます。

カンマで宣言を区切ることにより、1 つのステートメントで複数の変数を宣言できます。ただし、このシンタックスを使用すると、コードが読みにくくなる場合があります。

var first:String = "Bart", middle:String = "J.", last:String = "Bartleby";

パラメータ
variableName:* — 識別子です。


次の ActionScript では、製品名の新しい配列を作成します。Array.push を使用して、配列の末尾にエレメントを追加します。
var product_array:Array = new Array("Studio", "Dreamweaver", "Flash", "ColdFusion", "Contribute", "Breeze"); 
product_array.push("Flex"); 
trace(product_array); 
// Studio,Dreamweaver,Flash,ColdFusion,Contribute,Breeze,Flex

関連項目

whilestatement 
使用法
while (condition) { // ステートメント }

条件を評価して、条件の評価結果が true になる場合はステートメントを実行します。その後、ループの先頭に戻り、再び条件を評価します。条件の評価結果が false になると、ステートメントはスキップされ、ループは終了します。

while ステートメントは、次の手順を実行します。手順 1 ~ 4 の各繰り返しはループの反復と呼ばれます。次の手順に示すように、条件は各反復の始めにテストされます。

  1. condition が評価されます。
  2. condition の評価が true であるか、ブール値 true に変換される値 (ゼロ以外の数値など) である場合は、手順 3 に進みます。
    それ以外の場合は、while ステートメントを終了し、while ループの直後のステートメントから実行が再開されます。
  3. ステートメントブロック statement(s) を実行します。continue ステートメントが検出された場合は、残りのステートメントをスキップし、手順 1 に進みます。break ステートメントが検出された場合は、while ステートメントを終了し、while ループの直後のステートメントから実行が再開されます。
  4. 手順 1 に進みます。

一般にループ処理は、カウンタ変数が指定値より小さい間はアクションを実行するという場合に使用します。各ループの最後で、指定された値に達するまでカウンタがインクリメントされます。指定された値に達すると、conditiontrue でなくなり、ループは終了します。

実行するステートメントが 1 つしかない場合、while ステートメントで実行するステートメントを囲む中括弧 ({}) は必要ありません。

パラメータ
condition:Boolean — 評価結果が true または false になる式です。


次の例では、while ステートメントを使用して式をテストします。i の値が 20 未満の場合に、i の値がトレースされます。条件が true でなくなると、ループは終了します。
var i:Number = 0; 
while (i < 20) { 
    trace(i); 
    i += 3; 
}
/*
0 
3 
6 
9 
12
15 
18
*/

関連項目

withstatement 
使用法
with (object:Object) { // ステートメント }

ステートメントの実行に使用するデフォルトのオブジェクトを設定します。記述するコードの量を減らすことができます。

object パラメータは、statement(s) パラメータのプロパティ、変数、および関数を読み取るときのコンテキストになります。たとえば、objectmy_array であり、指定されたプロパティのうちの 2 つが lengthconcat である場合、これらのプロパティは my_array.length および my_array.concat として自動的に読み取られます。別の例で、objectstate.california である場合、with ステートメント内のアクションまたはステートメントは california インスタンス内から呼び出されます。

statement(s) パラメータで識別子の値を検索する場合、ActionScript は object で指定されたスコープチェーンの先頭から開始し、特定の順序でスコープチェーンの各レベルで識別子を検索します。

識別子を解決するために with ステートメントで使用されるスコープチェーンは、次のリストの最初の項目から始まり、最後の項目まで続きます。

with ステートメント内に変数を設定するには、with ステートメントの外側で変数を宣言しておくか、変数を設定するタイムラインへのフルパスを入力する必要があります。変数を宣言せずに with ステートメントに設定すると、with ステートメントはスコープチェーンに従って値を検索します。変数がまだ存在しない場合、with ステートメントが呼び出されたタイムライン上に新しい値が設定されます。

パラメータ
object:Object — ActionScript オブジェクトまたはムービークリップのインスタンスです。


次の例では、someOther_mc インスタンスの _x プロパティと _y プロパティを設定してから、フレーム 3 に進んで停止するよう someOther_mc に指示します。
with (someOther_mc) { _x = 50; _y = 100; gotoAndStop(3); }
次のコード例では、with ステートメントを使用せずに、上記のコードを記述しています。
someOther_mc._x = 50; someOther_mc._y = 100; someOther_mc.gotoAndStop(3);

with ステートメントは、スコープチェーンリスト内の複数の項目に同時にアクセスする場合に便利です。次の例では、ビルトインの Math オブジェクトをスコープチェーンの前に設定します。Math をデフォルトオブジェクトとして設定すると、cossinPI の各識別子がそれぞれ Math.cosMath.sinMath.PI に解決されます。axyr の各識別子は Math オブジェクトのメソッドやプロパティではありませんが、関数 polar() のオブジェクトアクティベーションスコープ内に存在するので、それぞれ対応するローカル変数として処理されます。

function polar(r:Number):void { 
    var a:Number, x:Number, y:Number; 
    with (Math) { 
        a = PI * pow(r, 2); 
        x = r * cos(PI); 
        y = r * sin(PI / 2); 
    } 
    trace("area = " + a); 
    trace("x = " + x); 
    trace("y = " + y); 
} polar(3);
/* 
area = 28.2743338823081 
x = -3 
y = 3
*/