使用靜態文字
Flash Player 9 以及更新的版本,Adobe AIR 1.0 以及更新的版本
靜態文字只能在 Flash Professional 中建立。您無法使用 ActionScript 透過程式設計方式實體化靜態文字。靜態文字適用於較短且不會變更的文字 (動態文字會變更)。您可將靜態文字視為類似 Flash Professional 中「舞台」所繪製的圓形或方形圖形元素。雖然靜態文字的限制多於動態文字,但是 ActionScript 3.0 可讓您使用 StaticText 類別來讀取靜態文字的屬性值。您也可以使用 TextSnapshot 類別來讀取靜態文字的值。
使用 StaticText 類別存取靜態文字欄位
一般而言,您會在 Flash Professional 的「動作」面板中,使用 flash.text.StaticText 類別與放在「舞台」的靜態文字實體進行互動。您也可以使用 ActionScript 檔來與含有靜態文字的 SWF 檔互動。在任一種情況下,您都無法透過程式設計方式來實體化靜態文字實體。靜態文字在 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);
如果您想要使用已載入 SWF 檔之靜態文字欄位中的文字做為應用程式另一個部分的值,則 TextSnapshot 類別會非常實用。