使用 TextArea 組件

此 TextArea 組件是原生 ActionScript TextField 物件的包裝函式。您可以使用 TextArea 組件來顯示文字,且若 editable 屬性為 true ,還能用來編輯與接收文字輸入。此組件可以顯示或接收多行文字,且若 wordWrap 屬性設定為 true ,還能將較長的文字行換行。 restrict 屬性能讓您限制使用者可以輸入的字元,而 maxChars 則能讓您指定使用者可以輸入的字元數上限。如果文字超出文字區域的水平邊界或垂直邊界,便會自動顯示水平捲軸或垂直捲軸,除非這兩種捲軸的關聯屬性 ( horizontalScrollPolicy verticalScrollPolicy ) 設定為 off

如果您需要多行的文字欄位,就可以使用 TextArea 組件。例如,您可以使用 TextArea 組件做為表單中的註解欄位。您可以設定偵聽程式,在使用者以 Tab 鍵移出欄位時,檢查這個欄位是否為空白。偵聽程式可以顯示錯誤訊息,提醒必須在欄位中輸入註解。

如果您需要單行的文字欄位,請使用 TextInput 組件。

您可以使用 setStyle() 方法設定 textFormat 樣式,以變更 TextArea 實體中顯示的文字樣式。您也可以在 ActionScript 中使用 htmlText 屬性,將 TextArea 組件格式化為 HTML 格式,甚至將 displayAsPassword 屬性設定為 true ,以星號來遮蔽文字。如果 condenseWhite 屬性設定為 true ,Flash 便會移除新輸入文字中因空格或斷行而形成的額外空白字元。原本就已存在控制項中的文字則不受影響。

與 TextArea 組件的使用者互動

應用程式可以啟用或停用 TextArea 組件。處於停用狀態時,便不接受滑鼠或鍵盤輸入。若處於啟用狀態,則其焦點、選取範圍和導覽規則如同 ActionScript TextField 物件。當 TextArea 實體成為焦點時,您可以使用下列按鍵加以控制:

按鍵

說明

方向鍵

如果可以編輯文字,則會將插入點在文字中向上、向下、向左或向右移動。

Page Down

如果可以編輯文字,則會將插入點移到文字的結尾。

Page Up

如果可以編輯文字,則會將插入點移到文字的開頭。

Shift+Tab

將焦點移到定位鍵迴圈中的上一個物件。

Tab 鍵

將焦點移到定位鍵迴圈中的下一個物件。

如需有關控制焦點的詳細資訊,請參閱 Flash Professional 的 ActionScript 3.0 參考 中的「FocusManager 類別」,以及 使用 FocusManager

TextArea 組件參數

您可以在「屬性」檢測器或「組件檢測器」中,為每個 TextArea 組件實體設定下列編寫參數: condenseWhite editable hortizontalScrollPolicy maxChars restrict text verticalScrollPolicy wordwrap 。這些參數都具有相對應的 ActionScript 同名屬性。如需有關這些參數可能值的詳細資訊,請參閱 適用於 Adobe Flash Platform 的 ActionScript 3.0 參考 中的 TextArea 類別。

進行編寫時,每個 TextArea 實體的即時預覽會反映您在「屬性」檢測器或「組件檢測器」面板中對參數的變更。若有需要,捲軸會出現在即時預覽中,但是在即時預覽中沒有作用。即時預覽時無法選取文字,也不能將文字輸入「舞台」上的組件實體。

您可以撰寫 ActionScript 利用 TextArea 組件的屬性、方法和事件,來控制上列各種選項及其它選項。如需詳細資訊,請參閱 適用於 Adobe Flash Platform 的 ActionScript 3.0 參考 中的 TextArea 類別。

建立具有 TextArea 組件的應用程式

下列程序說明如何在編寫時將 TextArea 組件加入應用程式。此範例會對 TextArea 實體設定 focusOut 事件處理常式,以確認使用者將焦點移至介面的其它部分之前,是否已在文字區域中輸入了一些內容。

  1. 建立新的 Flash 文件 (ActionScript 3.0)。

  2. 將 TextArea 組件從「組件」面板拖曳到「舞台」,並賦予實體名稱 aTa 。所有參數設定均保留預設值。

  3. 將第二個 TextArea 組件從「組件」面板拖曳到「舞台」,置於第一個 TextArea 組件下方,並賦予實體名稱 bTa 。所有參數設定均保留預設值。

  4. 開啟「動作」面板,選取主要「時間軸」中的「影格 1」,然後輸入下列 ActionScript 程式碼:

    import flash.events.FocusEvent; 
     
    aTa.restrict = "a-z,'\" \""; 
    aTa.addEventListener(Event.CHANGE,changeHandler); 
    aTa.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, k_m_fHandler); 
    aTa.addEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, k_m_fHandler); 
     
    function changeHandler(ch_evt:Event):void { 
        bTa.text = aTa.text; 
    } 
    function k_m_fHandler(kmf_event:FocusEvent):void { 
        kmf_event.preventDefault(); 
    }

    此範例會限制您只能在 aTa 文字區域中輸入小寫字元、逗號、所有格符號,以及空格。此外,也針對 aTa 文字區域的 change KEY_FOCUS_CHANGE MOUSE_FOCUS_CHANGE 事件,設定事件處理常式。 changeHandler() 函數會在每次發生 change 事件時,將 aTa.text 指定給 bTa.text ,而使 aTa 文字區域中輸入的文字自動顯示在 bTa 文字區域中。 KEY_FOCUS_CHANGE MOUSE_FOCUS_CHANGE 事件的 k_m_fHandler() 函數可以防止您在尚未輸入任何文字的情況下,就按 Tab 鍵移到下一個欄位。這是藉由防止發生預設行為而達到目的。

  5. 選取「控制 > 測試影片」。

    如果您在尚未輸入任何文字的情況下,就按 Tab 鍵將焦點移到第二個文字區域,則會出現錯誤訊息,且焦點將返回第一個文字區域。當您在第一個文字區域中輸入文字時,第二個文字區域會重製該文字。

使用 ActionScript 建立 TextArea 實體

下列範例使用 ActionScript 建立 TextArea 組件。其中, condenseWhite 屬性會設定為 true 以壓縮空白字元,並且將文字指定給 htmlText 屬性以利用 HTML 文字格式化特質的優點。

  1. 建立新的 Flash (ActionScript 3.0) 文件。

  2. 將 TextArea 組件拖曳到「元件庫」面板。

  3. 開啟「動作」面板,選取主要「時間軸」中的「影格 1」,然後輸入下列 ActionScript 程式碼:

    import fl.controls.TextArea; 
     
    var aTa:TextArea = new TextArea(); 
     
    aTa.move(100,100); 
    aTa.setSize(200, 200); 
    aTa.condenseWhite = true; 
    aTa.htmlText = '<b>Lorem ipsum dolor</b> sit amet, consectetuer adipiscing elit. <u>Vivamus quis nisl vel tortor nonummy vulputate.</u> Quisque sit amet eros sed purus euismod tempor. Morbi tempor. <font color="#FF0000">Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos.</font> Curabitur diam. Suspendisse at purus in ipsum volutpat viverra. Nulla pellentesque libero id libero.';  
    addChild(aTa);

    此範例利用 htmlText 屬性,使文字區塊套用 HTML 粗體與底線特質,並將文字區塊顯示在 a_ta 文字區域中。範例中也將 condenseWhite 屬性設定為 true ,以壓縮文字區塊中的空白字元。 setSize() 方法設定了文字區域的高度與寬度,而 move() 方法則設定其位置。 addChild() 方法會將 TextArea 實體加入至「舞台」。

  4. 選取「控制 > 測試影片」。