如何在以编程方式添加文本时自动滚动到 ActionScript 中的 TextField 底部:
var _output:TextField = new TextField();
for (var i:int = 0; i < 100; ++i) {
_output.appendText("Hello World!");
}
还要考虑应该启用 TextField 的垂直滚动,并且一旦添加了新文本,则应该再次执行自动滚动到底部。
如何在以编程方式添加文本时自动滚动到 ActionScript 中的 TextField 底部:
var _output:TextField = new TextField();
for (var i:int = 0; i < 100; ++i) {
_output.appendText("Hello World!");
}
还要考虑应该启用 TextField 的垂直滚动,并且一旦添加了新文本,则应该再次执行自动滚动到底部。
您应该在有问题的 TextField 上侦听Event.CHANGE
事件。相对于 textField 的事件描述如果您捕获此事件,您将使用 scrollV
属性。说,像这样:
_output.addEventListener(Event.CHANGE,scrollAllDown);
function scrollAllDown(e:Event):void {
var tf:TextField=(e.target as TextField);
if (!tf) return;
tf.scrollV=tf.maxScrollV;
}
更新:捕捉Event.CHANGE
不起作用,我留下这个以防有人偶然发现这种方法并且发现它不起作用。因此,唯一的方法是子类化TextField
并手动覆盖appendText()
方法以包括滚动,如下所示:
public class OutputTF extends TextField
{
// constructor omitted
override public function appendText(text:String):void
{ super.appendText(text); this.scrollV=this.maxScrollV; }
}
您可以使用 TextField 的 scrollV 和 maxScrollV 属性:
var _output:TextField = new TextField();
for (var i:int = 0; i < 100; ++i) {
_output.appendText("Hello World!");
//set vertical scroll position to max value
_output.scrollV = _output.maxScrollV;
}