使用 AS3,我动态创建、调整大小、定位和格式化文本字段。我从 xml 文件的内容动态设置文本字段的内容。我正在尝试使用粗体标签,但发现它不起作用。经过一番搜索后,我能想到的最好的结果是“Flash CS4 tag in with htmlText”。底线:我必须嵌入一个加粗的字体。
举个例子,假设我想使用 Tahoma。在我的 .fla 文件(使用 Flash CS4)中,我嵌入了 Tahoma 并将其导出以在 ActionScript 中使用。这让我可以在文本字段中使用 Tahoma 作为字体。如果我尝试使用 b 标签( textfield.htmlText="not bold, <b>bold</b>";
),粗体文本不会被加粗。基于上述问题,我现在也嵌入了 Tahoma 的 Bold 版本。
如何将 Tahoma 的粗体版本与 Tahoma 的常规版本链接起来,以便在使用粗体标签时在文本字段中获得粗体文本?
最佳答案
要设置文本的某些部分为粗体,您必须采用烦人的方式:TextFormats。
像这样;
var t:TextField = new TextField();
t.text = "this is bold";
var f:TextFormat = new TextFormat();
f.bold = true;
t.setTextFormat(f, 0, 4); // start at character 0, end at character 4
addChild(t);
这将输出以下内容:this 是粗体。
编辑 这应该会让事情变得更容易:
/**
* Render a given portion of a String as bold
* @param field The target TextField
* @param needle The section of text to render bold
*/
function bolden(field:TextField, needle:String):void
{
var tf:TextFormat = new TextFormat();
tf.bold = true;
var pos:uint = field.text.indexOf(needle);
field.setTextFormat(tf, pos, pos + needle.length);
}
// example below
var t:TextField = new TextField();
t.text = "i like iced tea";
bolden(t, "iced");
addChild(t);
编辑 怎么了。
/**
* Apply <b> tags
* @param field The target TextField
*/
function bolden(field:TextField):void
{
var tf:TextFormat = new TextFormat();
tf.bold = true;
var pos:int = 0;
var cls:int = 0;
while(true)
{
pos = field.text.indexOf("<b>", pos);
cls = field.text.indexOf("</b>", pos);
if(pos == -1) break;
field.setTextFormat(tf, pos+3, cls);
pos = cls;
}
}
// example below
var t:TextField = new TextField();
t.width = stage.stageWidth;
t.htmlText = "i like <b>iced</b> tea and <b>showbags</b>";
bolden(t);
addChild(t);
产量:我喜欢冰茶和展示袋。
关于actionscript-3 - AS3 TextField 不应用 <b> 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5802287/