6

如何在以编程方式添加文本时自动滚动到 ActionScript 中的 TextField 底部:

var _output:TextField = new TextField();
for (var i:int = 0; i < 100; ++i) {
    _output.appendText("Hello World!");
}

还要考虑应该启用 TextField 的垂直滚动,并且一旦添加了新文本,则应该再次执行自动滚动到底部。

4

2 回答 2

9

您应该在有问题的 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; } 
}
于 2013-08-13T10:12:26.330 回答
3

您可以使用 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;
}
于 2013-08-13T11:18:25.530 回答