Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 将textformat设置为字符串的多个部分_Actionscript 3_Textformat - Fatal编程技术网

Actionscript 3 将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;

我在将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对齐。即使跟踪显示了放置位置的正确编号,也要将其格式化到字符串中

任何想法都会被采纳

问候,,
汉斯·马格纳斯(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
由于endPosition 5第四次迭代:

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
文本字段:这是粗体,这是更多的文本,这也是粗体。但这并不大胆。这太大胆了

截图上的最终结果:

不使用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对我来说很好。