先看效果:
TextEngineTest_TextBaseline.swf
新文本引擎的类都在flash.text.engine包中了。
Adobe Labs还发布基于此的文本布局框架Text Layout Framework (TLF).
TLF文档
如果使用TLF,个人推断,实现本例的效果应该更加简单容易,若不用TLF如何做呢?
我们可以先看看文本行图片(引自Adobe在线文档):
调整图中的基线,也就是对flash.text.engine.ElementFormat中的
alignmentBaseline,dominantBaseline,baselineShift属性进行适当设置,
便可实现文字的上标及下标。
以A的3次方为例,我们输入以下代码:
/**
* 部分代码参考Adobe文档:
* http://help.adobe.com/zh_CN/AS3LCR/Flash_10.0/flash/text/engine/package-detail.html
* by kingnare.com
*/
package
{
import __AS3__.vec.Vector;
import flash.display.Sprite;
import flash.text.engine.ContentElement;
import flash.text.engine.ElementFormat;
import flash.text.engine.FontDescription;
import flash.text.engine.FontWeight;
import flash.text.engine.GroupElement;
import flash.text.engine.TextBaseline;
import flash.text.engine.TextBlock;
import flash.text.engine.TextElement;
import flash.text.engine.TextLine;
[SWF(width=”800″, height=”600″, backgroundColor=”#FFFFFF”, framerate=”24″)]
public class TextEngineTest_TextBaseline extends Sprite
{
public function TextEngineTest_TextBaseline()
{
//字体属性
var fd1:FontDescription = new FontDescription(“Arial”);
//格式设置
var ef1:ElementFormat = new ElementFormat(fd1, 16);
var fd2:FontDescription = new FontDescription(“Arial”);
var ef2:ElementFormat = new ElementFormat(fd2, 10);
//将基线上移8个像素
ef2.baselineShift = -8;
//创建已设置格式的文本的字符串
var te1:TextElement = new TextElement(“A”,ef1);
var te2:TextElement = […]
Comments