2014-03-25 63 views
1

是否可以將StyleSheet格式應用於僅通過texthtmlText屬性設置純文本集的Flash TextField?在文檔中TextField#styleSheet屬性,這個例子給出:如何將StyleSheet以純文本格式應用於TextField

public class TextStylesheetExample extends Sprite { 
    var myLabel:TextField = new TextField(); 
    var labelText:String = "Hello world."; 
    var newStyle:StyleSheet = new StyleSheet(); 

    public function TextStylesheetExample() 
    { 
     var styleObj:Object = new Object(); 
     styleObj.fontWeight = "bold"; 
     styleObj.color = "#660066"; 
     newStyle.setStyle(".defStyle", styleObj); 

     myLabel.styleSheet=newStyle; 
     myLabel.htmlText=labelText; 
     addChild(myLabel); 
    } 
} 

當我運行在Flash Player 12/AIR 4這個代碼,我看到的只是無格式文本。我看到一些結果,如果代碼被更改爲類似

var labelText:String = "<p>Hello world.</p>"; 
... 
newStyle.setStyle("p", styleObj); 

即,當選擇來打,它開始工作。然而,在我的用例中,我只是純文本沒有任何格式標籤,我想知道是否可以使用StyleSheet對象來設置text="Hello World"之類的東西。文件表明它應該是,但我不能得到它的工作。

謝謝。

+0

注:我也嘗試過「特殊」選擇器,如'*'或'global',但沒有任何效果。 – Borek

回答

1

TextField中,非HTML文本實際上放置在一組段落標籤中。作爲一個實驗:

var tf:TextField = new TextField(); 
tf.text = "hello world"; 
trace(tf.htmlText); 

跟蹤輸出將是:

<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">hello world</FONT></P>

因爲有一個嵌套FONT元素「會有限制」的造型信息,答案原來的問題是沒有,純文本TextFields不能使用樣式表對其字體屬性進行樣式設置。改爲使用defaultTextFormatsetTextFormat()

+0

'p'是我嘗試過的選擇器之一,它不起作用。你的帖子可能解釋了爲什麼 - 有一個「硬編碼」的「FONT」標籤可以覆蓋「p」上設置的任何樣式。那麼合乎邏輯的結論是,不能在純文本上設置字體樣式?或者有沒有辦法解決它? – Borek

+0

好點,@Borek。是否有你試圖在純文本上使用'StyleSheet'而不是'TextFormat'的原因? – Marcela

+0

不是真的,它只是一個使用樣式表而不是TextFormat的遺留應用程序,我想知道爲什麼字體樣式不起作用(或許它曾經用於過去?我懷疑在文檔中會有一個不起作用的示例) – Borek

相關問題