Actionscript 3 Actionscript 3.0中的htmlText已损坏-使用string.substring从增量显示中恢复为funky显示

Actionscript 3 Actionscript 3.0中的htmlText已损坏-使用string.substring从增量显示中恢复为funky显示,actionscript-3,class,textfield,htmltext,htmltextwriter,Actionscript 3,Class,Textfield,Htmltext,Htmltextwriter,这是ActionScript3.0中的textField.htmlText以及我为其制作的类的一个问题 为了不让我的全班同学都发帖,我设法把这个问题归结为一个看似愚蠢、几乎不可能克服的问题。似乎文本字段(特别是使用ActionScript创建的文本字段)在使用 myTextField.htmlText = myString.substr(0, length); 其中长度是一个不断增加的增量。不过,让我们来看一个更具体的例子。首先,在.fla文件的第1帧上有一些随机字符串: var Text0

这是ActionScript3.0中的textField.htmlText以及我为其制作的类的一个问题

为了不让我的全班同学都发帖,我设法把这个问题归结为一个看似愚蠢、几乎不可能克服的问题。似乎文本字段(特别是使用ActionScript创建的文本字段)在使用

myTextField.htmlText =  myString.substr(0, length);
其中长度是一个不断增加的增量。不过,让我们来看一个更具体的例子。首先,在.fla文件的第1帧上有一些随机字符串:

var Text0:String = 'It wasn\'t like we didn\'t have love. John and I shared much of our love, but for some reason something went terribly wrong one day...\nWe talked less, we saw each other less, we hardly even got to know each other anymore. The love was dried up, and if I stayed I would have withered, and choked on words I could never share...';
使用my类,它接受这个字符串,并为X关键字在这些单词周围应用Y HTML标记:

var textBuildah = new textBuilder(); //Class name, for this example, is textBuilder
Text0 = textBuildah.htmlModify(Text0, ['love', 'red'], ['we', '~#FCFE12']);
这将获取Text0(我们仍处于第1帧的操作中),并对其执行以下操作:

trace(Text0) // Outputs: It wasn't like <FONT COLOR="#FCFE12">we</FONT> didn't have <FONT COLOR="#FF0000">love</FONT>. John and I shared much of our <FONT COLOR="#FF0000">love</FONT>, but for some reason something <FONT COLOR="#FCFE12">we</FONT>nt terribly wrong one day... We talked less, <FONT COLOR="#FCFE12">we</FONT> saw each other less, <FONT COLOR="#FCFE12">we</FONT> hardly even got to know each other anymore. The <FONT COLOR="#FF0000">love</FONT> was dried up, and if I stayed I would have withered, and choked on words I could never share...
它的显示完全符合我的要求(图右下角)[i49.tinypic.com/2upts1v.jpg]。添加http://以查看它

然后,我删除上面的代码行,然后尝试以下操作:

var Length:Number = 0;
textBox.addEventListener(Event.ENTER_FRAME, writeText);

function writeText(e:Event):void {
    if (Length < Text0.length) {
        Length ++;
        e.currentTarget.htmlText = Text0.substring(0, Length);
        trace(e.currentTarget.htmlText+"\n"+e.currentTarget.name+"\n");
    } else {
        e.currentTarget.htmlText = Text0;
        e.currentTarget.removeEventListener(Event.ENTER_FRAME, writeText);
    }
}
var长度:Number=0;
textBox.addEventListener(Event.ENTER_FRAME,writeText);
函数writeText(e:事件):void{
如果(长度
而且,它的工作原理就像只做textBox.htmlText=Text0

然后,我们尝试一些新的东西。我们使用ActionScript创建一个textField,并对其应用相同的事件侦听器:

var LengthTwo:Number = 0;
var myTextField = new TextField();
myTextField.x = 100
myTextField.y = 100;
myTextField.width = 200;
myTextField.height = 150;
myTextField.wordWrap = true;

addChild(myTextField);

mytextField.addEventListener(Event.ENTER_FRAME, writeText);

function writeTextTwo(e:Event):void {
if (LengthTwo < Text0.length) {
    LengthTwo++;
    e.currentTarget.htmlText = Text0.substring(0, Length);
    trace(e.currentTarget.htmlText+"\n"+e.currentTarget.name+"\n");
} else {
    e.currentTarget.htmlText = Text0;
    e.currentTarget.removeEventListener(Event.ENTER_FRAME, writeText);
}
}
var length2:Number=0;
var myTextField=new TextField();
myTextField.x=100
myTextField.y=100;
myTextField.width=200;
myTextField.height=150;
myTextField.wordWrap=true;
addChild(myTextField);
mytextField.addEventListener(Event.ENTER_FRAME,writeText);
函数writetextwo(e:事件):void{
if(长度2<文本0.长度){
长度2++;
e、 currentTarget.htmlText=Text0.substring(0,长度);
跟踪(e.currentTarget.htmlText+“\n”+e.currentTarget.name+“\n”);
}否则{
e、 currentTarget.htmlText=Text0;
e、 currentTarget.removeEventListener(Event.ENTER_FRAME,writeText);
}
}
它产生了一些你在这张图片中心看到的东西。[i49.tinypic.com/2upts1v.jpg]。添加http://以查看它。而且,当它打字时,它会频繁地改变颜色,而且会让人迷失方向。我做了一些跟踪,我意识到myTextField的htmlText在它的开头有额外的标记。以下是其中一个跟踪的快照:

<P ALIGN="LEFT"><FONT FACE="Times Roman" SIZE="12" COLOR="#FF0000" LETTERSPACING="0" KERNING="0">It wasn&apos;t like <FONT COLOR="#FCFE12">we</FONT> didn&apos;t have love. John and I shared much of our love, but for some reason something <FONT COLOR="#FCFE12">we</FONT>nt terribly wrong one day...</FONT></P><P ALIGN="LEFT"><FONT FACE="Times Roman" SIZE="12" COLOR="#FF0000" LETTERSPACING="0" KERNING="0">We talked less, <FONT COLOR="#FCFE12">we</FONT> saw each other less, <FONT COLOR="#FCFE12">we</FONT> hardly even got to know each other anymore. The love was dried up, and if I stayed I would have withered, and choked on words I could never share..</FONT></P>
instance5

<TEXTFORMAT LEADING="2"><P ALIGN="LEFT"><FONT FACE="Calibri" SIZE="10" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">It wasn&apos;t like <FONT COLOR="#FCFE12">we</FONT> didn&apos;t have <FONT COLOR="#FF0000">love</FONT>. John and I shared much of our <FONT COLOR="#FF0000">love</FONT>, but for some reason something <FONT COLOR="#FCFE12">we</FONT>nt terribly wrong one day...</FONT></P></TEXTFORMAT><TEXTFORMAT LEADING="2"><P ALIGN="LEFT"><FONT FACE="Calibri" SIZE="10" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">We talked less, <FONT COLOR="#FCFE12">we</FONT> saw each other less, <FONT COLOR="#FCFE12">we</FONT> hardly even got to know each other anymore. The <FONT COLOR="#FF0000">love</FONT> was dried up, and if I stayed I would have withered, and choked on words I could never share..</FONT></P></TEXTFORMAT>
textBox

它不是&apos;我不喜欢我们没有&apos;我没有爱。约翰和我分享了很多我们的爱,但由于某种原因,有一天出了严重的问题……

我们谈得少了,我们见面的次数少了,我们甚至都不太了解对方。爱已经干涸,如果我留下来,我会枯萎,被永远无法分享的话语噎住。

实例5

它不是&apos;我不喜欢我们没有&apos;我没有爱。约翰和我分享了很多我们的爱,但由于某种原因,有一天出了严重的问题……

我们谈得少了,我们见面的次数少了,我们甚至都不太了解对方。爱已经干涸,如果我留下来,我会枯萎,被永远无法分享的话语噎住。

文本框
我意识到,在整个过程中,放在舞台上并设置为呈现HTML标记的文本字段将保留其开始标记

<TEXTFORMAT LEADING="2"><P ALIGN="LEFT"><FONT FACE="Calibri" SIZE="10" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">

然后,只需对其中的指定部分进行更改。但是,对于通过Actionscript 3.0添加的文本框,它会随着writeText函数的运行以及子字符串开始包含越来越多的HTML标记而更改上述任何起始标记

有人知道我错过了什么吗?我需要定义一个属性来消除这种奇怪的效果吗

另外,如果解释太长。中间的文本字段是问题所在。右下角的文本字段不是问题

如果您无法处理针对CS3/4的.fla,请使用以下内容:

var Text0:String = 'It wasn\'t like <font color = "#FCFE12">we</font> didn\'t have <font color = "#FF0000">love</font>. John and I shared much of our <font color = "#FF0000">love</font>, but for some reason something <font color = "#FCFE12">we</font>nt terribly wrong one day...\nWe talked less, <font color = "#FCFE12">we</font> saw each other less, <font color = "#FCFE12">we</font> hardly even got to know each other anymore. The <font color = "#FF0000">love</font> was dried up, and if I stayed I would have withered, and choked on words I could never share...';
var myTextField:TextField = new TextField();
var Length:Number = 0;
var LengthTwo:Number = 0;
myTextField.x = 75;
myTextField.y = 100;
myTextField.width = 400;
myTextField.height = 150;
myTextField.wordWrap = true;
myTextField.textColor = 0xFFFFFF;
addChild(myTextField);

textBox.addEventListener(Event.ENTER_FRAME, writeText);
myTextField.addEventListener(Event.ENTER_FRAME, writeTextTwo);

function writeText(e:Event):void {
    if (Length < Text0.length) {
        Length ++;
        e.currentTarget.htmlText = Text0.substring(0, Length);
        trace(e.currentTarget.htmlText+"\n"+e.currentTarget.name+"\n");
    } else {
        e.currentTarget.htmlText = Text0;
        e.currentTarget.removeEventListener(Event.ENTER_FRAME, writeText);
    }
}

function writeTextTwo(e:Event):void {
if (LengthTwo < Text0.length) {
    LengthTwo++;
    e.currentTarget.htmlText = Text0.substring(0, Length);
    trace(e.currentTarget.htmlText+"\n"+e.currentTarget.name+"\n");
} else {
    e.currentTarget.htmlText = Text0;
    e.currentTarget.removeEventListener(Event.ENTER_FRAME, writeText);
}
}
var Text0:String='这并不是说我们没有爱。约翰和我分享了很多我们的爱,但由于某种原因,有一天出了严重的问题…\n我们说话少了,我们见面少了,我们甚至连彼此都不认识了。爱已经干涸,如果我留下来,我会枯萎,被我永远无法分享的话语噎住;
var myTextField:TextField=newtextfield();
变量长度:数字=0;
变量长度2:Number=0;
myTextField.x=75;
myTextField.y=100;
myTextField.width=400;
myTextField.height=150;
myTextField.wordWrap=true;
myTextField.textColor=0xFFFFFF;
addChild(myTextField);
textBox.addEventListener(Event.ENTER_FRAME,writeText);
myTextField.addEventListener(Event.ENTER_FRAME,writeTextTwo);
函数writeText(e:事件):void{
如果(长度
到目前为止,我已经尝试在textField定义的正下方设置myTextField的TextFormat。然后我尝试在字段之外设置一个特定的文本格式。我已尝试将defaultTextFormat设置为新格式,我已尝试在writeText函数中重置样式表。。。这对我来说是一场物流噩梦。我不知道怎么做
var Text0:String = 'It wasn\'t like <font color = "#FCFE12">we</font> didn\'t have <font color = "#FF0000">love</font>. John and I shared much of our <font color = "#FF0000">love</font>, but for some reason something <font color = "#FCFE12">we</font>nt terribly wrong one day...\nWe talked less, <font color = "#FCFE12">we</font> saw each other less, <font color = "#FCFE12">we</font> hardly even got to know each other anymore. The <font color = "#FF0000">love</font> was dried up, and if I stayed I would have withered, and choked on words I could never share...';
var myTextField:TextField = new TextField();
var Length:Number = 0;
var LengthTwo:Number = 0;
myTextField.x = 75;
myTextField.y = 100;
myTextField.width = 400;
myTextField.height = 150;
myTextField.wordWrap = true;
myTextField.textColor = 0xFFFFFF;
addChild(myTextField);

textBox.addEventListener(Event.ENTER_FRAME, writeText);
myTextField.addEventListener(Event.ENTER_FRAME, writeTextTwo);

function writeText(e:Event):void {
    if (Length < Text0.length) {
        Length ++;
        e.currentTarget.htmlText = Text0.substring(0, Length);
        trace(e.currentTarget.htmlText+"\n"+e.currentTarget.name+"\n");
    } else {
        e.currentTarget.htmlText = Text0;
        e.currentTarget.removeEventListener(Event.ENTER_FRAME, writeText);
    }
}

function writeTextTwo(e:Event):void {
if (LengthTwo < Text0.length) {
    LengthTwo++;
    e.currentTarget.htmlText = Text0.substring(0, Length);
    trace(e.currentTarget.htmlText+"\n"+e.currentTarget.name+"\n");
} else {
    e.currentTarget.htmlText = Text0;
    e.currentTarget.removeEventListener(Event.ENTER_FRAME, writeText);
}
}
var Text0:String = 'It wasn\'t like <font color = "#FCFE12">we</font> didn\'t have <font color = "#FF0000">love</font>. John and I shared much of our <font color = "#FF0000">love</font>, but for some reason something <font color = "#FCFE12">we</font>nt terribly wrong one day...\nWe talked less, <font color = "#FCFE12">we</font> saw each other less, <font color = "#FCFE12">we</font> hardly even got to know each other anymore. The <font color = "#FF0000">love</font> was dried up, and if I stayed I would have withered, and choked on words I could never share...';
var myTextField:TextField = new TextField();
var Length:Number = 0;
var LengthTwo:Number = 0;
myTextField.x = 75;
myTextField.y = 100;
myTextField.width = 400;
myTextField.height = 150;
myTextField.wordWrap = true;
addChild(myTextField);

// create a TextFormat
var tf:TextFormat = new TextFormat("Calibri", 10, 0xffffff);

myTextField.addEventListener(Event.ENTER_FRAME, writeTextTwo);

function writeTextTwo(e:Event):void {
  if (LengthTwo < Text0.length) {
    LengthTwo++;

    // reset the default TextFomat
    e.currentTarget.defaultTextFormat = tf;

    e.currentTarget.htmlText = Text0.substring(0, Length);
    trace(e.currentTarget.htmlText+"\n"+e.currentTarget.name+"\n");
  } else {
    e.currentTarget.htmlText = Text0;
    e.currentTarget.removeEventListener(Event.ENTER_FRAME, writeText);
  }
}