我遇到了TLFTextField的问题,我似乎无法上标工作。代码应该做的是加载另一个swf文件,遍历每个显示对象,如果它找到一个id匹配的TLFTextField,用一个应该将分数转换为上标的标记替换该点。如果我使用字体标记,我能够在句点之后更改分数的字体大小,但我需要它来更改文本的基线。我看了一遍,还没找到任何适用于上标的东西。我试图将文字转换为上标的方式有问题吗?
dispObjArray = findChildrenByName(root, "price_id_" + key);
if (dispObjArray)
{
for (var tlf:int=0;tlf<dispObjArray.length;tlf++)
{
if (dispObjArray[tlf] is TLFTextField) {
var supBegin:String = "<span baselineShift='superscript'>";
var supEnd:String = "</span>";
var sup:String = pricesDict[key].@Price;
sup = sup.replace(".", supBegin) + supEnd;
try { (dispObjArray[tlf] as TLFTextField).htmlText = sup; } catch (e:*) { trace(e); }
}
}
}
顺便说一句,我注意到在设置htmlText之后,span标记似乎被删除
答案 0 :(得分:0)
所以为了让基线转换起作用,你必须添加
<TextFlow xmlns='http://ns.adobe.com/textLayout/2008'><p>
在文本前面,然后用
关闭它</p></TextFlow>
例如,根据我可能使用的内容,它看起来像:
<TextFlow xmlns='http://ns.adobe.com/textLayout/2008'><p>9<span baselineShift='superscript'>00</span></p></TextFlow>
获得常规9和上标00。
我的最终代码如下:
dispObjArray = findChildrenByName(root, "price_id_" + key);
if (dispObjArray)
{
for (var tlf:int=0;tlf<dispObjArray.length;tlf++)
{
if (dispObjArray[tlf] is TLFTextField) {
var sBegin:String = "<TextFlow xmlns='http://ns.adobe.com/textLayout/2008'><p>"
var supBegin:String = "<span baselineShift='superscript'>";
var supEnd:String = "</span>";
var sEnd:String = "</p></TextFlow>";
var sup:String = pricesDict[key].@Price;
sup = sBegin + sup.replace(".", supBegin) + supEnd + sEnd;
try { (dispObjArray[tlf] as TLFTextField).tlfMarkup = sup; } catch (e:*) { trace(e); }
}
}
}