import flash.text.TextField;
var txtBack:TextField=new TextField();
txtBack.text="\n";
trace(txtBack.text=="\n");
trace(txtBack.text=="");
为什么它会跟踪错误?
import flash.text.TextField;
var txtBack:TextField=new TextField();
txtBack.text="\n";
trace(txtBack.text=="\n");
trace(txtBack.text=="");
为什么它会跟踪错误?
好的,我已经检查过了,当您将text
属性分配给 TextField 时,它会调用隐式trim()
,或仅删除尾随换行符。一个简单的测试是这样的:
tf = new TextField();
tf.text = 'a';
addChild(tf); // to make traces valid
trace(tf.textHeight); // traces 15
tf.text = 'a\na';
trace(tf.textHeight); // traces 30 - yes, 2 lines
tf.text = 'a\n';
trace(tf.textHeight); // traces 15!
现在,您的verticalText()
函数返回了一个以换行符结尾的字符串,该字符串在您设置时被修剪tf.text
,因此它不再等于verticalText()
结果。
当我与\r
.
似乎 AS3 自动将任何换行符转换为回车。
txtBack.text="\n";
trace(txtBack.text=="\r");
txtBack.text="\r";
trace(txtBack.text=="\r");
跟踪true
两次。