0

嗨,我浏览了网页和此网页以寻求答案,但似乎无法找到解决我的问题的方法。我创建了打字机效果。它通过动态文本框(tekst_txt)显示。我想要实现的是能够使用 html 标签将特定单词的字体更改为粗体或斜体,只需包含 ie < b > 和 </b > 但我似乎无法做到这一点。我真的很感激一些建议。

这是显示在第一帧中的代码(该帧上不存在文本框): import flash.events.MouseEvent;

stop();

var tekst:String = ""; 
var i:uint = 0;

var licznik:Timer = new Timer(20);

tekst_txt.htmlText = tekst_txt.text;


stage.addEventListener(MouseEvent.CLICK, klikaj);
function klikaj(event:MouseEvent):void
{
if (licznik.running == true)
{

    tekst_txt.htmlText = tekst;
    licznik.stop();
}
else if (licznik.running == false || licznik == null)
{
    nextFrame();
    tekst_txt.text = "";

}
}

这是来自下一帧的代码(此帧中已经存在文本框):

import flash.events.MouseEvent;
import flash.utils.Timer;
import flash.events.TimerEvent;
stop();
tekst="Tekst1Tekst1<i>Tekst1</i>Tekst1Tekst1Tekst1Tekst1Tekst1Tekst1Tekst1";
licznik.start();
licznik.addEventListener(TimerEvent.TIMER, odpalaj);
function odpalaj(e:TimerEvent):void
{
//tekst_txt.htmlText = tekst_txt.text;
tekst_txt.appendText(tekst.charAt(i));
//tekst_txt.htmlText=tekst_txt.text;
i++;
if (i >= tekst.length)
{
    licznik.stop();
}
}
4

1 回答 1

1

您面临的问题是任何形式的 HTML 格式都需要超过 1 个字符来描述,因此当您尝试逐个字符地执行此动画时,您实际上只是将原始 html 标记设置到文本中。

这可能看起来有点混乱,但这里有一些你可以尝试的东西......

您将创建一个临时文本字段并首先将整个 html 标记文本设置为其 htmlText 值,然后您可以 getTextFormat 在附加时复制每个字符的格式...这允许 Flash 为您处理 html。

import flash.events.MouseEvent;
import flash.utils.Timer;
import flash.events.TimerEvent;

stop();

tekst="Tekst1Tekst1<i>Tekst1</i>Tekst1Tekst1Tekst1Tekst1Tekst1Tekst1Tekst1";

// shove your html markup text into the htmlText of a textfield
// this allows Flash to deal with parsing the html
var myTextField:TextField = new TextField();
myTextField.htmlText = tekst;

licznik.start();
licznik.addEventListener(TimerEvent.TIMER, odpalaj);

function odpalaj(e:TimerEvent):void
{
    // get the text directly from the temp textfield
    // you want to do this because it will have already processed the html markup
    // and will give you the correct indexes and length of your text
    tekst_txt.appendText(myTextField.text.charAt(i));

    // copy the textformat
    var format:TextFormat = myTextField.getTextFormat(i, i+1);
    tekst_txt.setTextFormat(format, i, i+1);

    i++;
    if (i >= tekst.length)
    {
        licznik.stop();
    }
}
于 2013-05-18T10:08:32.877 回答