2011-05-04 48 views
1

我沒有成功嘗試將textFormat分配給同一字符串的兩個不同部分,但第二次未註冊並保持爲默認文本格式。嵌入字體的兩種樣式(常規和粗體)。ActionScript - setTextFormat()在同一個字符串上重複多次?

//Create Text Field 
private function createAboutWindowTextField():TextField 
    { 
    var aboutWindowFont:Font = new AboutWindowFont(); 

    var regularFormat:TextFormat = new TextFormat(); 
    var boldFormat:TextFormat = new TextFormat(); 

    regularFormat.size = boldFormat.size = 12; 
    regularFormat.font = boldFormat.font = aboutWindowFont.fontName; 
    regularFormat.align = boldFormat.align = TextFormatAlign.CENTER; 
    boldFormat.bold = true; 

    var result:TextField = new TextField(); 
    result.antiAliasType = AntiAliasType.ADVANCED; 
    result.autoSize = TextFieldAutoSize.LEFT; 
    result.defaultTextFormat = regularFormat; 
    result.embedFonts = true; 
    result.multiline = true; 
    result.selectable = false; 
    result.type = TextFieldType.DYNAMIC; 

    result.text = "First Header\n" + 
        "Version 1.0\n" +               
        "Copyright © 2011\n\n" + 

        "Second Header:\n" + 
        "Other info";              

    result.setTextFormat(boldFormat, result.text.indexOf("First Header"), ("First Header").length); 
    result.setTextFormat(boldFormat, result.text.indexOf("Second Header:"), ("Second Header:").length); 

    return result; 
    } 

上面的代碼會導致這兩個「第一個標題」和「第二頭:」越來越大膽,而只是「第一個標題」將被同時「二頭:」設置爲黑體似乎被簡單地忽略。有什麼問題?

回答

2

setTextFormat函數的第三個參數不正確。當你想得到結尾索引時,你正在使用長度。就像這樣:

var indexA:int = result.text.indexOf("Second Header:"); 
result.setTextFormat(boldFormat, indexA, indexA + ("Second Header:").length); 

我喜歡用StyleSheet格式與多種字體或字體粗細一個文本框。管理起來更容易一些。

var reg:HelveticaReg = new HelveticaReg(); 
var bold:HelveticaBold = new HelveticaBold(); 

var format:TextFormat = new TextFormat(reg.fontName, 14, 0x000000); 

var ss:StyleSheet = new StyleSheet(); 
ss.setStyle(".bold", {fontFamily:bold.fontName}); 

var tf:TextField = new TextField(); 
tf.width = 400; 
tf.multiline = true; 
tf.wordWrap = true; 
tf.autoSize = TextFieldAutoSize.LEFT; 
tf.selectable = false; 
tf.antiAliasType = AntiAliasType.ADVANCED; 
tf.embedFonts = true; 
tf.type = TextFieldType.DYNAMIC; 
tf.defaultTextFormat = format; 
tf.styleSheet = ss; 
tf.htmlText = "<span class='bold'>Lorem ipsum dolor</span> sit amet, consectetur adipiscing elit."; 
addChild(tf); 
+0

,你說這是不可能採用同樣的textFormat到文本框的多個實例,而無需使用樣式表的htmlText? – TheDarkIn1978 2011-05-04 20:03:53

+0

我添加了一個StyleSheet解決方案的例子。在我的測試中,我能夠將文本格式應用於文本字段的多個部分。也許嘗試使用粗體字體的不同字體,而不是在文本格式中設置「bold = true」。進行測試時,如果更改粗體格式的顏色,顏色是否正確更改? – Corey 2011-05-04 21:30:49

+0

否,將粗體字體設置爲不同的顏色不適用於第二次。奇怪的是,如果我只應用一次並嘗試將文本格式設置爲result.text.indexOf(「Second Header:」),它也不會被應用。我不知道問題是否與字符串?跟蹤result.text.indexOf(「Second Header:」)返回正確的索引。 – TheDarkIn1978 2011-05-04 22:23:44

相關問題