我在将textformat应用于字符串的各个部分时遇到了问题:
feedBackText = "This is <b>bold</b>, and this is some more text, and <b>this is bold too</b>. But this is not bold. This is <b>bold</b>!";
feedbackTextField.htmlText = feedBackText;
var startBoldPos:int = 0;
var closeBoldPos:int = 0;
var i:uint = 0;
while(true) {
startBoldPos = feedBackText.indexOf("<b>", startBoldPos);
closeBoldPos = feedBackText.indexOf("</b>", startBoldPos);
if(startBoldPos > 0) {
i++;
// Here is the main trouble:
feedbackTextField.setTextFormat(_boldFormat, startBoldPos-((7)*i), closeBoldPos-((10)*i));
trace("i is: " + i);
trace("Feedbacktext: " + feedBackText);
trace("Start bold: " + startBoldPos);
trace("End bold: " + closeBoldPos + "\n");
} else {
// This works as expected
feedbackTextField.setTextFormat(_boldFormat, startBoldPos, closeBoldPos-3);
// trace("Feedbacktext: " + feedBackText);
// trace("Start bold: " + startBoldPos);
// trace("End bold: " + closeBoldPos + "\n");
}
if(startBoldPos == -1) break;
startBoldPos = closeBoldPos;
}
我正在尝试使用指定setTextFormat的索引,但它似乎与startBoldPos和endBoldPos不对齐。即使跟踪显示了在字符串中将setTextFormat放置在何处的正确数量。
任何想法都会被贬低!
此致 汉斯马格努斯
答案 0 :(得分:0)
我测试了你的代码,它按预期工作。我不完全明白你想做什么,所以这里有一些一般性的评论:
您只能使用setTextFormat
设置一些不htmlText
的格式。在使用html标签分配文本后,textField文本将已经部分格式化。
setTextFormat
适用于text
属性,因此计算的开始和结束索引取决于没有html标记的文本。在你的情况下它将是:这是大胆的,这是一些更多的文本,这也是大胆的。但这并不大胆。这很大胆!
逐步跟踪代码:
1)使用 将文本设置为TextField中的htmlText属性。在此TextField包含之后:
这是粗体,这是更多文字,这也是粗体。但这并不大胆。这是粗体!
2)循环开始。第一次迭代:
startBoldPos-((7)*i) = 1
closeBoldPos-((10)*i) = 5
TextField:T 他的是粗体,这是更多文字,这也是粗体。但这并不大胆。这是粗体!
3)第二次迭代:
startBoldPos-((7)*i) = 39
closeBoldPos-((10)*i) = 52
TextField:T 他的是粗体,这是更多tex t,这也是粗体。但这并不大胆。这是粗体!
4)第三次迭代:
startBoldPos-((7)*i) = 87
closeBoldPos-((10)*i) = 85
没有任何改变,因为endPosition&lt;指定startPosition。
5)第四次迭代:
startBoldPos = -1
closeBoldPos-3 = 12
TextField:这是粗体,这是一些tex t,这也是粗体。但这并不大胆。这是粗体!
屏幕截图的最终结果:
UPDATE(没有setTextFormat方法的格式化):
...
[Embed(source="GOTHIC.TTF", fontName="Gothic", embedAsCFF="false", advancedAntiAliasing="true")]
private var gothicFont:Class;
[Embed(source="GOTHICB.TTF", fontName="Gothic", embedAsCFF="false", advancedAntiAliasing="true", fontWeight="bold")]
private var gothicFontBold:Class;
...
var feedBackText:String = "This is <b>bold</b>, and this is some more text, and <b>this is bold too</b>. But this is not bold. This is <b>bold</b>!";
var feedbackTextField:TextField = new TextField();
feedbackTextField.defaultTextFormat = new TextFormat("Gothic", 14);
feedbackTextField.embedFonts = true;
feedbackTextField.width = 500;
feedbackTextField.htmlText = feedBackText;
结果(如你所见的嵌入字体):