UIScrollBar 組件讓您能為文字欄位加上捲軸。您可以在編寫期間為文字欄位加上捲軸,或在執行階段使用 ActionScript 進行。若要使用 UIScrollBar 組件,請在「舞台」上建立文字欄位,並將 UIScrollBar 組件從「組件」面板拖曳到文字欄位範圍框的任何區域。
如果捲軸長度小於捲動箭頭的合併大小,則無法正確顯示捲軸。其中一個箭頭按鈕會變成隱藏在另一按鈕之後。Flash 不檢查這方面的錯誤。此時最好使用 ActionScript 隱藏捲軸。如果捲軸太小以致放不下捲軸方塊 (縮圖),Flash 會隱藏捲軸方塊。
UIScrollBar 組件的功能如同其它捲軸。兩端各有一個箭頭按鈕,其間又有捲動軌道和捲軸方塊 (縮圖)。此組件可附加到文字欄位的任一邊,以垂直或水平方向使用。
如需有關 TextField 的詳細資訊,請參閱 Adobe® Flash® Professional CS5 的 ActionScript® 3.0 參考中的 TextField 類別。
與 UIScrollBar 組件的使用者互動
UIScrollBar 不同於其它多數組件,此組件可接受連續的滑鼠輸入,例如使用者按住滑鼠按鈕而不需要重複點選。
UIScrollBar 組件與鍵盤之間沒有互動。
UIScrollBar 組件參數
您可以在「屬性」檢測器或「組件檢測器」中,為每個 UIScrollBar 組件實體設定下列編寫參數:direction 以及 scrollTargetName。這些參數都具有相對應的 ActionScript 同名屬性。
您可以撰寫 ActionScript,使用 UIScrollBar 實體的類別方法、屬性和事件,以設定 UIScrollBar 實體的其它選項。如需詳細資訊,請參閱 Adobe® Flash® Professional CS5 的 ActionScript® 3.0 參考中的 UIScrollBar 類別。
建立具有 UIScrollBar 組件的應用程式
下列程序說明如何在編寫時將 UIScrollBar 組件加入應用程式。
- 建立新的 Flash (ActionScript 3.0) 文件。
- 建立動態文字欄位,其高度必須要能容納一行或兩行文字,然後在「屬性」檢測器中賦予實體名稱 myText。
- 在「屬性」檢測器中,將文字輸入欄位的「字行類型」設定為「多行」;若要想使用水平捲軸,請設定為「多行不換行」。
- 開啟「動作」面板,在主要「時間軸」中選取「影格 1」,然後輸入下列 ActionScript 程式碼以填入 text 屬性,讓使用者必須捲動才能檢視全部的文字:
myText.text="When the moon is in the seventh house and Jupiter aligns with Mars, then peace will guide the planet and love will rule the stars."
備註: 請確定「舞台」上的文字欄位小到需要捲動才看得到所有文字。否則,捲軸就不會出現,或可能只出現兩行但沒有縮圖底框 (拖曳以捲動內容的部分)。 - 確認已開啟物件貼齊功能 (「檢視 > 貼齊 > 貼齊物件」)。
- 將 UIScrollBar 實體從「組件」面板拖曳到文字輸入欄位附近要附加捲軸的位置。等到組件與文字欄位重疊時才放開滑鼠,讓組件適當地繫結至欄位。賦予組件實體名稱 mySb。組件的 scrollTargetName 屬性會自動填入,其值等於文字欄位在「屬性」檢測器和「組件檢測器」中的實體名稱。如果此名稱未出現在「參數」索引標籤中,表示 UIScrollBar 實體可能重疊得不夠多。
- 選取「控制 > 測試影片」。
使用 ActionScript 建立 UIScrollBar 組件實體
您可以使用 ActionScript 建立 UIScrollBar 實體,讓捲軸與文字欄位在執行階段產生關聯。下列範例會建立水平方向的 UIScrollBar 實體,並且將它附加到名為 myTxt 的文字欄位實體下方,而該文字欄位實體則是從 URL 載入文字。此範例也設定捲軸的大小,以符合文字欄位的大小:
- 建立新的 Flash (ActionScript 3.0) 文件。
- 將 ScrollBar 組件拖曳到「元件庫」面板。
- 開啟「動作」面板,選取主要「時間軸」中的「影格 1」,然後輸入下列 ActionScript 程式碼:
import flash.net.URLLoader; import fl.controls.UIScrollBar; import flash.events.Event; var myTxt:TextField = new TextField(); myTxt.border = true; myTxt.width = 200; myTxt.height = 16; myTxt.x = 200; myTxt.y = 150; var mySb:UIScrollBar = new UIScrollBar(); mySb.direction = "horizontal"; // Size it to match the text field. mySb.setSize(myTxt.width, myTxt.height); // Move it immediately below the text field. mySb.move(myTxt.x, myTxt.height + myTxt.y); // put them on the Stage addChild(myTxt); addChild(mySb); // load text var loader:URLLoader = new URLLoader(); var request:URLRequest = new URLRequest("http://www.helpexamples.com/flash/lorem.txt"); loader.load(request); loader.addEventListener(Event.COMPLETE, loadcomplete); function loadcomplete(event:Event) { // move loaded text to text field myTxt.text = loader.data; // Set myTxt as target for scroll bar. mySb.scrollTarget = myTxt; }
- 選取「控制 > 測試影片」。
沒有留言:
張貼留言