使用AS3我正在动态创建,调整大小,定位和格式化文本字段。我是从xml文件的内容动态设置文本字段的内容。我试图使用粗体标签,并注意到它不起作用。经过一番搜索,我能想出的最好的是“Flash CS4 tag in with htmlText”。底线:我必须嵌入一个鼓舞人心的字体。
举个例子,假设我想使用Tahoma。在我的.fla文件中(使用Flash CS4)我嵌入了Tahoma并将其导出以用于actionscript。这让我在我的文本域中使用Tahoma作为字体。如果我尝试使用b标记(textfield.htmlText="not bold, <b>bold</b>";
),则粗体文本不会变得粗壮。基于上述问题,我现在已经嵌入了大胆的Tahoma版本。
如何将Tahoma的粗体版本与常规版本的Tahoma相关联,以便在使用粗体标记时,我的文本字段中会显示粗体文本?
答案 0 :(得分:4)
要将文本的某些部分设置为粗体,您必须采用恼人的方式: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);
这将输出以下内容:此为粗体。
修改强> 这应该会更容易:
/**
* 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);
收益率:我喜欢 iced 茶和 showbags 。
答案 1 :(得分:0)
根据@Marty Wallace的回答:
我之前在代码中设置了我的textformat。它加载字体,大小等。
我正在做的是将字体应用于我的文本字段,然后如果字符串包含粗体标记,则将textformat bold属性设置为true。将代码放在setTextFormat之上会使整个文本字段变为粗体。出于某种原因,将其设置在文本字段下方只会使标记文本变为粗体。
textfield.setTextFormat(textformat);
if(xmlText.search('<b>')){
textformat.bold = true;
}
[编辑]
不需要if:
textfield.setTextFormat(textformat);
textformat.bold = true;
[编辑]
您还需要嵌入的加粗字体才能工作。我将它从我的库中删除,无法再使用粗体&gt;。&lt;在我的tahoma示例中,字体名称必须是“Tahoma bold”。
所以现在我需要嵌入所有字体的大胆和斜体版本,如果我想使用&lt; b&gt;和&lt; i&gt;在我的htmlText
中答案 2 :(得分:0)
在Flash中,将Dynamic TextField放在实例名称为“myTextField”的位置,并将以下代码放在时间轴上。 (仅用于测试目的,否则不建议使用时间轴代码),
var str:String = <![CDATA[ <font face='Arial' size='18' align='left'> This is my <b>BOLD</b> text </font>]]>;
myTextField.htmlText = str;