Actionscript 3 将textformat设置为字符串的多个部分
我在将textformat应用于字符串的各个部分时遇到问题:Actionscript 3 将textformat设置为字符串的多个部分,actionscript-3,textformat,Actionscript 3,Textformat,我在将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;
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对齐。即使跟踪显示了放置位置的正确编号,也要将其格式化到字符串中
任何想法都会被采纳
问候,,
汉斯·马格纳斯(Hans Magnus)我对您的代码进行了测试,结果与预期相符。我不完全理解你想做什么,所以这里有一些一般性的评论: 您可以在不使用setTextFormat的情况下设置某些格式,但只能使用htmlText。使用html标记指定文本后,文本字段文本将已部分格式化 setTextFormat使用文本属性,所以计算的开始和结束索引依赖于没有html标记的文本。在您的情况下,它将是:这是粗体,这是一些更多的文本,这也是粗体。但这并不大胆。这太大胆了 并逐步跟踪您的代码: 1将文本设置为TextField中的htmlText属性。此文本字段后包含: 这是粗体的,这是更多的文本,这也是粗体的。但这并不大胆。这太大胆了 2个循环开始。第一次迭代:
startBoldPos-((7)*i) = 1
closeBoldPos-((10)*i) = 5
startBoldPos-((7)*i) = 39
closeBoldPos-((10)*i) = 52
startBoldPos-((7)*i) = 87
closeBoldPos-((10)*i) = 85
startBoldPos = -1
closeBoldPos-3 = 12
文本字段:这是粗体,这是更多的文本,这也是粗体。但这并不大胆。这太大胆了
3第二次迭代:
startBoldPos-((7)*i) = 1
closeBoldPos-((10)*i) = 5
startBoldPos-((7)*i) = 39
closeBoldPos-((10)*i) = 52
startBoldPos-((7)*i) = 87
closeBoldPos-((10)*i) = 85
startBoldPos = -1
closeBoldPos-3 = 12
文本字段:这是粗体,这是更多的文本,这也是粗体。但这并不大胆。这太大胆了
4第三次迭代:
startBoldPos-((7)*i) = 1
closeBoldPos-((10)*i) = 5
startBoldPos-((7)*i) = 39
closeBoldPos-((10)*i) = 52
startBoldPos-((7)*i) = 87
closeBoldPos-((10)*i) = 85
startBoldPos = -1
closeBoldPos-3 = 12
由于endPositionstartBoldPos-((7)*i) = 1
closeBoldPos-((10)*i) = 5
startBoldPos-((7)*i) = 39
closeBoldPos-((10)*i) = 52
startBoldPos-((7)*i) = 87
closeBoldPos-((10)*i) = 85
startBoldPos = -1
closeBoldPos-3 = 12
文本字段:这是粗体,这是更多的文本,这也是粗体。但这并不大胆。这太大胆了
截图上的最终结果:
不使用setTextFormat方法更新格式:
并以嵌入字体显示结果,如您所见:
谢谢@crabar!该代码用于导入字体Myriad Pro和Myriad Pro Bold的类中,并且TextField feedbackTextField设置为EmbeddeFonts=true;如果我只使用htmlText,粗体不会格式化,因为我似乎需要使用TextFormat来完成嵌入此字体的操作?行feedbackTextField.setTextFormat_boldFormat,startBoldPos-7*i,closeBoldPos-10*i;需要在字符串中查找和标记,并相应地格式化文本。跟踪位置看起来正确,但与第1行中给定的字符串相比,粗体显示错误。您能解释一下您现在有什么问题吗?您正在使用嵌入字体和字符串后格式化是否为粗体?还是在错误的位置上加粗?或者字符串在格式化后不可见?粗体应用在错误的位置,因此我在setTextFormat中使用索引的方式有问题。即使startBoldPos和closeBoldPos的跟踪值正确,feedbackTextField.setTextFormatboldFormat、startBoldPos、closeBoldPos也有问题;如果字符串中有多组and标记。粗体显示,但在错误的地方…你能显示你期望的字符串和你现在想要的字符串吗?在我的回答中,我发现计算有问题,并显示格式化后的字符串以及原因。如果我只使用htmlText,粗体不会格式化,因为我似乎需要使用TextFormat来处理嵌入的字体?关于这一点,不使用setTextFormat对我来说很好。