首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > flex >

Flex 利用 sprit 兑现字体 竖排 旋转

2013-04-02 
Flex 利用 sprit 实现字体 竖排 旋转package{import flash.display.Spriteimport flash.text.engine.Elem

Flex 利用 sprit 实现字体 竖排 旋转
package { import flash.display.Sprite;import flash.text.engine.ElementFormat;import flash.text.engine.FontDescription;import flash.text.engine.TextBlock;import flash.text.engine.TextElement;import flash.text.engine.TextLine;import flash.text.engine.TextRotation; public class RoutaTextAs extends Sprite{//"MS Mincho" 一个字体/** * 旋转字体 * @param text 待旋转的文档 * @param fontSize * @param fontType * @param rotate 旋转度 * @param theHeight 高 * @param theWidth 宽 * @param x * @param y * @param spaceBetween 字体空间 * */public function RoutaTextAs(text:String="" , fontSize:int=15 , fontType:String="宋体" , rotate:String= TextRotation.ROTATE_90 , theHeight:int=60 , theWidth:int=60, x:int=0 , y:int=0, spaceBetween:int=20):void { var format:ElementFormat = new ElementFormat(); format.fontSize = fontSize; format.fontDescription = new FontDescription(fontType); var textBlock:TextBlock = new TextBlock(); textBlock.content = new TextElement(text, format); textBlock.lineRotation = rotate;//方向 var linePosition:Number =x; var previousLine:TextLine = null; while (true) { var textLine:TextLine = textBlock.createTextLine(previousLine, theHeight); trace(this.width);if (textLine == null || this.width > theWidth) { break; }textLine.y = y; textLine.x = linePosition; linePosition -= spaceBetween; addChild(textLine); previousLine = textLine; } } } }

? Spirt必须add在UIComponent里面,包装了一层,可以直接使用:

<?xml version="1.0" encoding="utf-8"?><mx:UIComponent xmlns:mx="http://www.adobe.com/2006/mxml" initialize="init()"><mx:Script><![CDATA[import flash.text.engine.TextRotation;import mx.events.FlexEvent;public var text:String = "";//要加入的字体public var fontSize:int = 15 ;public var fontType:String ="宋体";public var rotate:String = TextRotation.ROTATE_90;//旋转角度public var spaceBetween:int = 18;//旋转角度protected function init():void{var tt:RoutaTextAs =  new RoutaTextAs(text, fontSize , fontType , rotate , this.height , this.width,this.x , this.y , spaceBetween);this.addChild(tt);}]]></mx:Script></mx:UIComponent>

?

?

一些参数需要自己调整,下面是Application

<?xml version="1.0" encoding="utf-8"?>  <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="application1_initializeHandler(event)">  <mx:Script><![CDATA[import flash.text.engine.TextRotation;import mx.core.UIComponent;import mx.events.FlexEvent;protected function application1_initializeHandler(event:FlexEvent):void{var rr:RoutaText = new RoutaText();rr.height = 60;rr.width = 150;rr.spaceBetween = 55;rr.text = "猩红的撒旦斯蒂芬桑德菲杰撒" +"地方速度快李凤江桑德菲杰思考了打飞机克里" +"斯丁积分卡螺丝刀积分卡螺丝" +"刀杰弗里斯大开间付款了三等奖分散度看了 飞";ttt.addChild(rr);}]]></mx:Script><mx:Box id="ttt" x="409" y="151" width="250"/></mx:Application>  

?

用吧!

?

?

RoutaTextAs  修改了一下.支持横排很竖排package {  import flash.display.Sprite;import flash.text.engine.ElementFormat;import flash.text.engine.FontDescription;import flash.text.engine.TextBlock;import flash.text.engine.TextElement;import flash.text.engine.TextLine;import flash.text.engine.TextRotation;  public class RoutaTextAs extends Sprite{//"MS Mincho"  一个字体/** * 旋转字体 * @param text 待旋转的文档 * @param fontSize  * @param fontType  * @param rotate 旋转度 * @param theHeight 高 * @param theWidth  宽 * @param x * @param y * @param spaceBetween 字体空间 *  */public function RoutaTextAs(text:String="" , fontSize:int=15 ,fontType:String="宋体" , rotate:String= TextRotation.ROTATE_90 , theHeight:int=60 , theWidth:int=60, x:int=0 , y:int=0  , spaceBetween:int=20):void {  var format:ElementFormat = new ElementFormat();  format.fontSize = fontSize;  format.fontDescription = new FontDescription(fontType);  var textBlock:TextBlock = new TextBlock();  textBlock.content =  new TextElement(text, format);  textBlock.lineRotation = rotate;//方向  var previousLine:TextLine = null;  if(rotate == TextRotation.ROTATE_90){var linePosition:Number = x;  while (true) {  var textLine:TextLine = textBlock.createTextLine(previousLine, theHeight);  if (textLine == null || this.width > theWidth)  { break;  }textLine.y = y;      textLine.x = linePosition;  linePosition += spaceBetween;  addChild(textLine);                  previousLine = textLine;  }          }else if(rotate == TextRotation.ROTATE_0){var linePosition:Number = y + fontSize ;  while (true) {  var textLine:TextLine = textBlock.createTextLine(previousLine, theWidth);  if (textLine == null ||( this.height+fontSize) >= theHeight)  { break;  }textLine.y = linePosition;      textLine.x = x;  linePosition += spaceBetween;  addChild(textLine);                  previousLine = textLine;  }          }}  } }  

热点排行