TextArea中使用embedFonts以及asfunction

在使用TextArea 的时候,如果需要嵌入字体,要通过V2 style来设置.

myTextArea.setStyle("fontFamily", "myFont");
myTextArea.setStyle("embedFonts",true);

这没什么好说的,普通TextField能成功,TextArea就不会出问题.但是当设置html=true的时候,就不对了...经过几番测试,发现并不是embedFonts没有起作用,而是fontFamliy没有起作用!

myTextArea.setStyle("fontFamily", "Arial");
myTextArea.html = true;
myTextArea.text = "abcdefg";
trace(myTextArea.text);

输出发现,FONT FACE还是_sans.
<TEXTFORMAT LEADING="2"><P ALIGN="LEFT"><FONT FACE="_sans" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">asdfasdf</FONT></P></TEXTFORMAT>

这些是flash在TextField.html设置为true后自动为htmlText加上的一些style.TextArea只不过是封装了htmlText.

但为什么不行了呢?我也没仔细研究,估计是mx.controls.TextArea的draw方法中的setTextFormat引起的.我这猜的,没有证实过^^_.
解决方法非常简单,就是自己定义FONT FACE,比如

myTextArea.html=true;
myTextArea.text="<font face=/"myFont/">abcdefg</font>";

或者
import TextField.StyleSheet;
var css_str:String = "p {font-family: myFont; font-size: 24px; font-weight: bold; }";
var my_styleSheet:StyleSheet = new StyleSheet();
if (my_styleSheet.parseCSS(css_str)) {
   myTextArea.styleSheet = my_styleSheet;
   myTextArea.text = "<p>abcdegf</p>";
}

随便怎么样设置都行,只要把字体改成嵌入的字体名称就可以了.
这个在网上找了半天都没找到具体解决方法,可能太显而易见了或者我的搜索技巧实在不行orz...所以在这里记一下.

另外一个在TextArea中使用asfunction的问题,其实就是一个路径问题,因为asfunction:functionName,相当于执行this["functionName"]();而这个this,是指TextField所在的地方,也就是TextArea~,但定义的function肯定不会是在TextArea中,所以只要写对路径就可以了,这个网上很容易搜索到比如这里

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值