| 
          
           
 
 
          
          
           
            一般而言,當 Flash 將組件繪製為各種狀態時,該組件的樣式會指定其外觀元素、圖示、文字格式以及邊框間距的值。例如,Flash 會以不同的外觀元素繪製 Button,以顯示它的滑入狀態 (當您以滑鼠按鈕按一下此 Button 時會發生此狀態) 有別於一般及正常狀態。當它處於停用狀態 (將
            
             enabled
            
            屬性設定為
            
             false
            
            ) 時,也會使用不同的外觀元素。
            
           
            您可以在文件、類別與實體層級設定組件的樣式。此外,某些樣式屬性也可以繼承自父輩組件。例如,List 組件會藉由繼承自 BaseScrollPane 來繼承 ScrollBar 樣式。
            
           
            您可以使用下列方式,設定樣式自訂組件:
            
           
            - 
             
              設定組件實體上的樣式。您可以變更單一組件實體的顏色和文字屬性。這種方式在某些狀況下很有效,但是如果必須設定文件中所有組件的各個屬性,則可能很花時間。
              
             
            - 
             
              您可以設定文件中指定類型之所有組件的樣式。如果您要針對指定之樣式的所有組件 (例如,針對文件中的所有 CheckBox 或 Button) 套用一致的外觀,則可以在組件層級設定樣式。
              
             
              對容器設定的樣式屬性值,都會由其中含有的組件所繼承。
              
             
              當您使用「即時預覽」功能檢視「舞台」上的組件時,Flash 不會顯示對於樣式屬性所作的變更。
              
             
            
           
           
          
           
            
           
           
            瞭解樣式設定
           
           
            
             這裡列出幾項關於使用樣式的重點:
             
            
             - 
              繼承
             
 
             - 
              依據設計,子組件已設定成要繼承父組件的樣式。您無法在 ActionScript 內設定樣式的繼承。
             
 
             
              
             - 
              優先順序
             
 
             - 
              如果組件樣式是以一種以上的方式設定,Flash 就會根據樣式的優先順序,使用它所遇到的第一個樣式。Flash 會以下列順序尋找樣式,直到發現其值為止:
              
               - 
                
                 Flash 會在組件實體上尋找樣式屬性。
                 
                
               - 
                
                 如果樣式是繼承樣式之一,Flash 會查看整個父階層以找出繼承值。
                 
                
               - 
                
                 Flash 會尋找組件上的樣式。
                 
                
               - 
                
                 Flash 會尋找 StyleManager 上的全域設定。
                 
                
               - 
                
                 如果屬性尚未定義,屬性就會具有
                 
                  undefined
                 
                 的值。
                 
                
               
              
             
              
             
            
           
          
           
            
           
           
            存取組件的預設樣式
           
           
            
             您可以使用組件類別的靜態
             
              getStyleDefinition()
             
             方法,存取該組件的預設樣式。例如,下列程式碼會擷取 ComboBox 組件的預設樣式,並顯示
             
              buttonWidth
             
             和
             
              downArrowDownSkin
             
             屬性的預設值:
             
            import fl.controls.ComboBox; 
var styleObj:Object = ComboBox.getStyleDefinition(); 
trace(styleObj.buttonWidth); // 24 
trace(styleObj.downArrowDownSkin); // ScrollArrowDown_downSkin 
            
           
          
           
            
           
           
            設定並取得組件實體上的樣式
           
           
            
             任何 UI 組件實體都可以直接呼叫
             
              setStyle()
             
             和
             
              getStyle()
             
             方法,以設定或擷取樣式。下列語法會設定組件實體的樣式和值:
             
            instanceName.setStyle("styleName", value);
            
             此語法會擷取組件實體的樣式:
             
            var a_style:Object = new Object(); 
a_style = instanceName.getStyle("styleName");
            
             請注意,
             
              getStyle()
             
             方法會傳回 Object 類型,因為此方法可以傳回具有不同資料類型的多種樣式。例如,下列程式碼會設定 TextArea 實體 (
             
              aTa
             
             ) 的字體樣式,並使用
             
              getStyle()
             
             方法擷取該樣式。下列範例會將傳回值轉換為 TextFormat 物件,以便將它指定給 TextFormat 變數。如果沒有先進行轉換,編譯器就會發出嘗試強制將 Object 變數轉換為 TextFormat 變數的錯誤。
             
            import flash.text.TextFormat; 
 
var tf:TextFormat = new TextFormat(); 
tf.font = "Georgia"; 
aTa.setStyle("textFormat",tf); 
aTa.text = "Hello World!"; 
var aStyle:TextFormat = aTa.getStyle("textFormat") as TextFormat; 
trace(aStyle.font);
            
           
            
             
            
            
             使用 TextFormat 設定文字屬性
            
            
             
              您可以使用 TextFormat 物件,格式化組件實體的文字。TextFormat 物件所擁有的屬性可讓您指定
              
               bold
              
              、
              
               bullet
              
              、
              
               color
              
              、
              
               font
              
              、
              
               italic
              
              、
              
               size
              
              等文字特性,以及數種其他特性。您可以在 TextFormat 物件中設定這些屬性,然後再呼叫
              
               setStyle()
              
              方法,將這些屬性套用到組件實體。例如,下列程式碼會設定 TextFormat 物件的
              
               font
              
              、
              
               size
              
              和
              
               bold
              
              屬性,並將這些屬性套用到 Button 實體:
              
             /* Create a new TextFormat object to set text formatting properties. */ 
var tf:TextFormat = new TextFormat(); 
tf.font = "Arial"; 
tf.size = 16; 
tf.bold = true; 
a_button.setStyle("textFormat", tf);
             
              下圖說明這些設定對於具有「Submit」標籤之按鈕的影響:
              
             
             
              透過
              
               setStyle()
              
              對組件實體設定的樣式屬性擁有最高的優先順序,並且會覆寫其它所有樣式設定。但是,在單一組件實體中使用
              
               setStyle()
              
              設定的屬性越多,組件在執行階段呈現的速度就會越慢。
              
             
            
           
          
           
            
           
           
            為組件的所有實體設定一種樣式
           
           
            
             您可以使用 StyleManager 類別的靜態
             
              setComponentStyle()
             
             方法,為組件類別的所有實體設定一種樣式。例如,首先您可以將 Button 拖曳到「舞台」,再於「時間軸」之「影格 1」的「動作」面板中,加入下列 ActionScript 程式碼,將所有 Button 的文字顏色設定為紅色:
             
            import fl.managers.StyleManager; 
import fl.controls.Button; 
 
var tf:TextFormat = new TextFormat(); 
tf.color = 0xFF0000; 
StyleManager.setComponentStyle(Button, "textFormat", tf); 
            
             您後續加入「舞台」的所有 Button 都會具有紅色的標籤。
             
            
           
          
           
            
           
           
            為所有組件設定一種樣式
           
           
            
             您可以使用 StyleManager 類別的靜態
             
              setStyle()
             
             方法,為所有組件設定一種樣式。
             
            
             - 
              
               將 List 組件拖曳到「舞台」,並為它指定實體名稱為
               
                aList
               
               。
               
              
             - 
              
               將 Button 組件拖曳到「舞台」,並為它指定實體名稱為
               
                aButton
               
               。
               
              
             - 
              
               如果「動作」面板還沒有開啟,請按下
               
                F9
               
               或是從「視窗」選單選取「動作」加以開啟。接著,再於「時間軸」的「影格 1」中輸入下列程式碼,將所有組件的文字顏色設定為紅色。
               
              import fl.managers.StyleManager; 
 
var tf:TextFormat = new TextFormat(); 
tf.color = 0xFF0000; 
StyleManager.setStyle("textFormat", tf);
              
             - 
              
               在「動作」面板中加入下列程式碼,將文字填入 List 中。
               
              aList.addItem({label:"1956 Chevy (Cherry Red)", data:35000}); 
aList.addItem({label:"1966 Mustang (Classic)", data:27000}); 
aList.addItem({label:"1976 Volvo (Xcllnt Cond)", data:17000}); 
aList.allowMultipleSelection = true;
              
             - 
              
               選取「控制 > 測試影片」或按 Control+Enter 鍵,編譯程式碼並測試您的內容。在按鈕標籤與清單中的文字應該都是紅色的。
               
              
             
            
           
          
          
           
          
          
          
          | 
         
          | 
         
          
          |