`
luyuwww
  • 浏览: 96537 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

    博客分类:
  • Flex
 
阅读更多

    字体旋转竖排,最近一直在网上找,大多是利用TLF等,太麻烦.终于被我找到了集成Sprit来解决这个问题,封装了一下,贴出来,备用:

集成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;  
				}          
			}
		}  
	} 
}  
分享到:
评论

相关推荐

    flex 竖排Menu

    本主题将深入探讨如何实现一个“竖排Menu”在Flex中的应用,以此来满足非传统布局的需求。 标题“flex 竖排Menu”指的是在Flex环境中创建一个垂直排列的菜单条。默认情况下,Flex的MenuBar组件是水平布局的,但通过...

    android 字体竖排

    在Android开发中,有时我们需要实现一些特殊的UI效果,比如文本竖向排列,这在传统的TextView中并不直接支持。本文将详细讲解如何通过自定义...这就是自定义TextView实现字体竖排的基本过程,希望对你有所帮助。

    android利用Paint在Canvas上实现竖排写字

    本教程将详细讲解如何利用Paint和Canvas在Android应用中实现在竖直方向上写字。 1. **Canvas与Paint基础** - **Canvas**:Canvas是Android中的画布,提供了各种绘制方法,如drawRect(), drawText()等,让我们能够...

    精彩编程与编程技巧-旋转字体...

    根据给定的文件信息,我们可以深入探讨编程技巧中关于旋转字体的具体实现方法,尤其是在Windows API环境下的应用。本文将详细解析如何使用Windows GDI(Graphics Device Interface)来创建旋转字体,以及通过具体的...

    Flex3 竖排TabNavigator

    这个例子展示了如何在Flex3中创建一个竖排的TabNavigator。这种自定义布局的方法可以应用于其他需要垂直排列组件的情况,提供了更大的设计灵活性。在实际开发中,你可能还需要考虑一些细节,比如标签的间距、选中...

    Qt 旋转文字代码实现

    Qt 旋转文字代码实现是利用 Qt 库中的 QPainter 类实现文字旋转的方法。该方法主要使用 QPainter 的 rotate 和 translate 函数来实现文字旋转。 要实现文字旋转,需要四个步骤: 1. 变换旋转中心:使用 translate ...

    css实现文字竖排效果.rar

    本教程将详细介绍如何使用CSS实现文字竖排效果。 首先,我们可以使用`writing-mode`属性来改变文本的书写方向。这个属性允许我们将文本从左到右(默认的`lr-tb`),改为从右到左(`rl-tb`),或者从上到下(`tb-rl`...

    arcgis maplex竖排文字

    总的来说,ArcGIS Maplex提供了一套强大的工具来实现竖排文字,通过精确控制标注的位置、旋转和对齐方式,你可以创建出专业且美观的地图。理解并熟练掌握这些功能,将极大地提升你的地图制作效率和质量。在实际操作...

    文本框文字竖排

    3. 使用`transform`属性:通过旋转元素,也可以实现竖排文本的效果。例如,`transform: rotate(90deg);`会将元素及其内容旋转90度,使其看起来是竖直的。不过,这种方法可能会影响文本的可读性和其他布局元素的对齐...

    文字竖排编辑器

    总的来说,【文字竖排编辑器】是一个展示Winform自定义控件功能的实例,通过源代码学习,我们可以了解到如何利用.NET Framework提供的API实现特定的界面需求。对于开发者来说,这样的项目不仅能提升编程技能,还能...

    Flex Label控件竖排显示文字的实现代码

    标题中的“Flex Label控件竖排显示文字的实现代码”就是这样一个需求,描述中提到的方法提供了一种将Label控件的文字转换为垂直排列的解决方案。 Flex是Adobe公司推出的一种基于ActionScript 3.0的开源框架,用于...

    字体的特殊效果:竖排、环绕(3KB)...

    在VB中,要实现竖排文本,开发者通常需要利用Graphics对象和TextRenderer类来绘制文本,设置适当的旋转角度使文字呈现垂直状态。例如,可以使用`Graphics.DrawString`方法,并配合一个旋转矩阵,将文本绘制在画布上...

    Unity竖排文字的实现(2019以上新版本可用)

    1. 包里包含源码和一个测试用例,可直接看到效果。 2. 竖排文字的一些说明,移步以下链接 https://blog.csdn.net/piaoyun29/article/details/123255514

    Python实现竖排打印传单手机号码易撕条

    使用python 2.7,初学,代码比较简单。 numPrinter.py 复制代码 代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*- ”’  @Author:Quico Tomy  @Function:Input a phone number and print by line ...

    vc实现竖着书写汉字的c++代码

    ### 使用VC实现竖写汉字的方法 #### 背景与目的 ...通过以上步骤,可以在Windows系统中利用VC实现竖写汉字的效果。这种方法不仅适用于简单的演示或测试环境,也可以用于开发具有特殊需求的应用程序。

    HTML竖排菜单制作

    通过使用`&lt;ul&gt;`和`&lt;li&gt;`标签构建菜单,然后利用CSS的`display`属性、选择器以及响应式设计,我们可以定制出符合需求的竖排菜单。在提供的压缩包中,`menu.html`包含了HTML结构,而`css`文件则是对应的CSS样式,你...

    js+css实现有立体感的按钮式文字竖排菜单效果.docx

    为了使菜单能够垂直排列,我们可以利用无序列表 `&lt;ul&gt;` 和列表项 `&lt;li&gt;` 来构建菜单结构,并结合CSS中的浮动或Flex布局属性来实现竖排效果。 ```html (this)" onmouseout="Off(this)" onclick="Down(this)"&gt; 首页...

    实现文字竖排

    实现文字竖排 实现方法,传入一个字符串,代表横排文字。传入一个整型值代表折行的位置。返回一个字符串,输出该字符串则横排文字已被转换为竖排文字(从右向左)

    VC中实现文字竖排的简单方法(推荐)

    在Windows系统中,通过利用某些特定的“躺”着的字体以及适当的图形操作,可以轻松实现这一功能。本文将详细介绍如何在VC++中实现文字竖排的简单方法。 首先,我们要了解“躺”着的字体。在Windows中,存在一些特殊...

    WPF Label文字竖排 字间距控制

    若要实现文字竖排,我们需要利用`FlowDirection`属性。`FlowDirection`属性定义了内容的布局方向,它可以设置为`LeftToRight`(默认值,从左到右)、`RightToLeft`(从右到左)以及`TopToBottom`(从上到下)。要让...

Global site tag (gtag.js) - Google Analytics