flash textfiled换行 以及\r和\n区别
flash.text.TextField.wordWrap(value:Boolean):void
一个布尔值,表示文本字段是否自动换行。如果 wordWrap 的值为 true,则该文本字段自动换行;如果值为 false,则该文本字段不自动换行。默认值为 false。
flash.text.TextField.multiline(value:Boolean):void
表示字段是否为多行文本字段。如果值为 true,则文本字段为多行文本字段;如果值为 false,则文本字段为单行文本字段。在类型为 TextFieldType.INPUT 的字段中,multiline 值将确定 Enter 键是否创建新行(如果值为 false,则将忽略 Enter 键)。如果将文本粘贴到其 multiline 值为 false 的 TextField 中,则文本中将除去新行。
一、支持换行使用wordWrap为true即可。如果是输入型textfield,支持ENTER键换行,设置multiline为true即可。
另外比较烦的问题是输入一个汉字后,一直输入英文字符,当本行显示不下时,自动换行会把汉字留在第一行,所有英文字符换到第一行。比如:
测
xxxxxxxxxxxxxxxxxxxxxxxxx
解决办法就是自己根据宽度末尾加\n
参考链接http://bbs.9ria.com/thread-275089-1-1.html
var _textField:TextField = new TextField();
private funciton txtCompleHandler():void
{
//记录文本
var str:string = _textField.text;
//记录单行宽度
var addLen:int = 0;
//下面神奇的事情出现了
for(var i:int = 0;i<str.length;i++)
{
addLen += _textField.getCharBoundaries(i).width;
if(addLen >_textField.textWidth)
{
var ss:string = str.chatAt(i-1) + "\n";
//在指定位置插入换行
_textField.replaceText(i-1,i,ss);
//清理记录
addLen = 0;
}
}
}
二、注意replaceText(beginIndex:int, endIndex:int, newText:String)
使用newText替换包含起点,不包含终点的那一段字符
比如abcdefg
replaceText(2,3,"x");//abxdefg
replaceText(2,4,"x");//abxefg
replaceText(2,2,"x");//abxcdefg
当一个textfield多次执行replaceText时,其text属性是一直在变化的。所以在循环开始前,要使用一个string变量来保存textfiled.text.另外,因为index会变化,所以尽量从后往前替换
三、textfiled会自动把字符中的\n变成\r,测试如下:
var tf:TextField = new TextField();
tf.textColor = 0xffffff;
tf.text = "ab\ncd";
var txt:String = tf.text;
for(var i:int = 0;i<txt.length;i++){
if(txt.charAt(i) == "\n"){
trace("nnnn");
}else if(txt.charAt(i) == "\r"){
trace("rrrr");
}else if(txt.charAt(i) == " "){
trace("space");
}else{
trace("word",txt.charAt(i));
}
}
意外地发现trace出来的竟然是\r
四、\n和 \r区别
参考http://www.jianshu.com/p/23804b0b03c8
\r : return 到当前行的最左边。
\n: newline 向下移动一行,并不移动左右。
Linux中\n表示回车+换行;
Windows中\r\n表示回车+换行。
Mac中\r表示回车+换行。
再来看看咱们开头举得那个栗子:
printf aaaa \r\n bbbbbb
print ccccc \n ddddddd
print eeeeeeeee \r ffffff
编程时(无论是windows系统还是linux系统)
\r 就是return 回到本行行首,这就会把这一行以前的输出覆盖掉,具体内部细节就像是输出缓冲区重新开始缓冲了一样
而\n 是换行+回车,把光标先移到下一行,然后换到行首->也就是下一行的行首
结果是下面这样
aaaa
bbbbbb
ccccc
ddddddd
ffffff
上一篇: C# 分割PDF页面