- 浏览: 30819 次
最新评论
AS3研究TextField心得
这两天自己做了textinput和textarea组件,众所周知,这两种组件的内部其实都是一个原始的textfield。这里把自己的一些研究心得记录如下
首先要明白几种长度单位:
1、磅:pt(point),这是一种绝对长度单位,为1/72英寸,等于0.3527mm
2、像素:px,这是一种相对长度单位,譬如,WONDOWS的用户所使用的分辨率一般是96像素/英寸。而MAC的用户所使用的分辨率一般是72像素/英寸。
以下讨论文本框TextField相关:
1、字号
也就是fontsize,flash中单位是磅(office中也时),可以使用textHeight和textWidth来获取文本的像素高度和宽度,由于各种字体自身的差别,不是相同字号的字体所需要的文本框高度都一致。譬如Arial字体就比宋体所需要的文本框高度高。
2、文本框高度
对于单行文本框,给定一个高度和一种字体,如何确定所需要的最大的字号呢?
有一个简便方法就是,新建一个autosize的文本框,设置其字号并判断其高度来得到最大字号。
function getFontSizeByTxtHeight(h:Number, font:String):Number { //给定单行文本框高度h,字体font获取最大字号 var testtxt:TextField = new TextField(); testtxt.type = TextFieldType.INPUT; testtxt.autoSize = TextFieldAutoSize.LEFT; for (var size:Number=Math.round(h);size>0; size-=0.5) { var tf:TextFormat = new TextFormat(); tf.leading = 0; tf.font = font; tf.size = size; testtxt.defaultTextFormat = tf; testtxt.text = "test单行文本"; //trace(size, testtxt.height); if (testtxt.height <= h) { break; } } return size; }
3、leading行与行之间的垂直距离
在flash 舞台中新建一个文本框,leading的默认值为2,单位也是磅
而new出来的文本框,leading默认值为0
4、锯齿消除方法
在舞台上可以看到有五种方式:
使用设备字体、位图文本、动画消除锯齿、可读性消除锯齿、自定义消除锯齿。
第一种会查找客户端中该对应字体并进行显示,如果客户端不存在相应的字体,则显示会出现预料外的情况。
后四种方式需要嵌入字体。
而TextField类对应的属性中有
embedFonts:是否使用嵌入字体,false时相当于使用设备字体
antiAliasType:抗锯齿类型flash.text.AntiAliasType.NORMAL、flash.text.AntiAliasType.ADVANCED
gridFitType:网格固定类型
thickness、sharpness对应自定义消除锯齿的粗细、清晰度
5、滚动相关
textfield有scrollV、scrollH、maxScrollV、maxScrollH、bottomScrollV属性来指示相关滚动。
V 代表垂直方向,是以行为单位的,如果文本框内显示得下指定行数,则maxScrollV为1,一旦显示不小,maxScrollV就不为1了,所以可以侦听文字的change事件判断maxScrollV来判断是否需要滚动条。scrollV到bottomScrollV之间是当前您能看到的文本框中中的行号。
H代表水平方向,以像素为单位,从0开始,不同于V,同理检测maxScrollH是否为0。
6、事件相关
textfield有如下事件比较常用:
focusin、out:获得、失去焦点,用于判断当前用户是否focus in该文本框,譬如一旦focusin加个高亮边框阿,换个背景什么的
textinput、change:前者在文本输入到文本框之前调用,后者在文本框中的文本发生改变时调用。
scroll:不管你用什么方式导致scrollV、scrollH发生改变,譬如输入文本时的自动滚动阿,滚轮滚动文本阿(即便你手工设置scroll)都会导致scroll事件的发生
来源于:http://hi.baidu.com/winnyang/blog/item/b1cfddb5e693efc637d3ca13.html
发表评论
-
async-threading 让flex支持多线程(转)
2014-07-17 16:57 725开源项目async-threading能使as3支持多线程, ... -
Flex 多图片压缩上传
2014-07-10 15:04 817转自:http://my.oschina.net/eats ... -
Flex AMF Upload Demo
2013-05-05 20:44 887java端:写一个名为ZhuaTuSerlvet的Serl ... -
FXG Test
2012-12-17 23:52 644<?xml version="1.0&q ... -
My Flex Skin
2012-11-23 08:58 87My Flex Skin -
Flex中的DataGrid的内容处理(总结)
2012-11-08 10:59 7471.介绍一下DataGrid中数据的增加/删除/获取。添加/删 ... -
flex DataGrid 表头分组
2012-11-05 08:46 931<mx:AdvancedDataGrid id ... -
AS3分享:FLEX开发者必备的十多个工具
2012-11-01 00:07 617http://as3.aa-a.net/index.php/a ... -
Flex efflex 开源库
2012-10-31 00:00 596http://www.efflex.org/FlexEffec ... -
Flex 字体 消除锯齿相关
2012-10-30 23:34 15021. Adobe 官方: 控制 ... -
Flex实用工具
2012-10-26 08:43 57Flex实用工具 -
Flex使用module加载swf,部分组件样式丢失
2012-10-24 15:44 743flex使用module加载swf,部分组件样式丢失(da ... -
My calendar
2012-10-22 14:21 572My calendar design -
使用ObjectUtil来遍历flex as Object对象的所有属性
2012-10-12 10:48 707遍历或者复制一个as 对象所有的属性,可以模仿java使用反射 ... -
AS3 Copy 对象
2012-10-12 10:46 703第一种:public static function clon ... -
AS3 深复制
2012-10-12 10:44 71713.11 深度拷贝一个ArrayCo ... -
flex mvc 架构图
2012-09-25 15:12 626flex mvc 架构图 -
Parsley API
2012-08-16 08:40 727Parsley API -
如何从数组中随机取出多个不重复的项
2012-08-14 17:24 9181.问题如何随机取数组 ... -
随机取数组里的值
2012-08-14 17:11 827怎样随机读取数组中的一个值(两种方法) 方法一: var ...
相关推荐
AS3.0的元素处理------------TextField.txt 的用法及相关介绍
总觉得文本框有边框上下左右都显示特难看,现在做了个自动调整大小的只有下边边框的文本框~
自定义textfield
* TLFTextField 对象与 TextField 对象类似,但 TLFTextField 对象可以利用 flashx 包中包含的 TLF 类的属性和方法。TLF 提供了大量格式选项和功能。 * @author */ public class STLFTextField extends ...
手工创建TextField,TextField的属性基本上上面都描述了,以及键盘的回调方法
8-22textfield8-22textfield8-22textfield8-22textfield
TextField 自动换行
xcode5.0.2 ios7.0 storyboard中设置背景图片+多个textfield,
NULL 博文链接:https://as3.iteye.com/blog/1163790
实现键盘的点击隐藏和解决textField被呼出键盘挡住的问题的简单代码
支持换行 空格 加粗 颜色 字号 字体 源码放送 用TextField实现
TextField-InputView, UITextField InputView模式:终结注册类、信息采集类
ios-TextField自动换行.zip
EXT表单验证之TextField,vtype 包括所有EXT中TextField的验证方式
ExtJs5 去掉textfield边框
TextField多行输入(自动换行),小惊奇。仅仅只是导入了一个字体文件
Java中TextField类.pdf 学习资料 复习资料 教学资源
让你对文本更了解,让你可以轻松的学习textfield;让你知道文本可以根据内容的大小改变其宽度和高度
NULL 博文链接:https://as3.iteye.com/blog/1017194