actionscript-3 - AS3 TextField 不应用 <b> 标签

标签 actionscript-3 flash-cs3

使用 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/

相关文章:

actionscript-3 - actionscript3 中的文本框自动调整大小

actionscript-3 - 从旋转的矩形计算边界框坐标

actionscript-3 - 为什么我无法删除该影片剪辑?

flash - 在 actionscript 中使用普通版(不是调试版)的 Flash 播放器时,如何获取错误消息和堆栈跟踪?

apache-flex - Flex 对象创建实例数量加倍

actionscript-3 - 如何使用 as3 类访问舞台上的电影剪辑?

actionscript-3 - 如何在 Flash CS3 中访问群组成员

actionscript-3 - undefined variable addChild?

actionscript-3 - tweenlite : tweening multiple objects at once

flash - 使用Youtube AS3 Player API时如何避免安全错误