静止テキストの操作

Flash Player 9 以降、Adobe AIR 1.0 以降

静止テキストは、Flash Professional でのみ作成できます。ActionScript を使用して、プログラムによって静止テキストをインスタンス化することはできません。 静止テキストは、テキストが短く、(ダイナミックテキストと異なり)変更が意図されない場合に便利です。Flash Professional のステージで描画された円または四角形のようなグラフィックエレメントとしての静止テキストについて考えてください。静止テキストにはダイナミックテキストよりも大きな制約がありますが、ActionScript 3.0 は StaticText クラスを使用して、静止テキストのプロパティ値を読み取る機能をサポートします。さらに、TextSnapshot クラスを使用して静止テキスト外の値を読み取ることもできます。

StaticText クラスによる静止テキストフィールドへのアクセス

ステージ上に配置された静止テキストインスタンスを操作するには、通常は Flash Professional のアクションパネルで flash.text.StaticText クラスを使用します。 静止テキストを含む SWF ファイルとやり取りする ActionScript ファイルを操作することもできます。 いずれの場合も、プログラムを通じて静止テキストインスタンスをインスタンス化することはできません。静止テキストは、Flash Professional で作成できます。

既存の静止テキストフィールドへの参照を作成するには、表示リスト内のアイテムに対して反復処理を行い、変数を割り当てます。次に、例を示します。

for (var i = 0; i < this.numChildren; i++) { 
var displayitem:DisplayObject = this.getChildAt(i); 
if (displayitem instanceof StaticText) { 
trace("a static text field is item " + i + " on the display list"); 
        var myFieldLabel:StaticText = StaticText(displayitem); 
        trace("and contains the text: " + myFieldLabel.text); 
} 
}

静止テキストフィールドへの参照が設定されたら、ActionScript 3.0 でそのフィールドのプロパティを使用できます。次のコードは、タイムラインのフレームにアタッチされ、 myFieldLabel という名前の変数が静止テキスト参照に割り当てられることを想定しています。 myField という名前のダイナミックテキストフィールドは、 myFieldLabel の値 x y を基準として配置され、 myFieldLabel の値を再び表示します。

var myField:TextField = new TextField(); 
addChild(myField); 
myField.x = myFieldLabel.x; 
myField.y = myFieldLabel.y + 20; 
myField.autoSize = TextFieldAutoSize.LEFT; 
myField.text = "and " + myFieldLabel.text

TextSnapshot クラスの使用

既存の静止テキストインスタンスをプログラムで操作する必要がある場合は、flash.text.TextSnapshot クラスを使用して、flash.display.DisplayObjectContainer の textSnapshot プロパティを操作します。これは、 DisplayObjectContainer.textSnapshot プロパティから TextSnapshot インスタンスを作成することになります。次に、このインスタンスにメソッドを適用して、値を取得するか、静止テキストの部分を選択することができます。

例えば、テキスト "TextSnapshot Example" を含む静止テキストフィールドをステージ上に配置することができます。 次の ActionScript をタイムラインのフレーム 1 に追加します。

var mySnap:TextSnapshot = this.textSnapshot; 
var count:Number = mySnap.charCount; 
mySnap.setSelected(0, 4, true);  
mySnap.setSelected(1, 2, false);  
var myText:String = mySnap.getSelectedText(false);  
trace(myText); 

TextSnapshot クラスは、テキストをアプリケーションの別の部分の値として使用する場合に、ロードされた SWF の静止テキストフィールドからテキストを取得するときに便利です。