AS3 TextField自动滚动到底部

时间:2013-08-13 10:03:54

标签: actionscript-3 scroll textfield

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

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

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

2 个答案:

答案 0 :(得分:7)

您应该在有问题的TextField上收听Event.CHANGE事件。 Event description relative to 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; } 
}

答案 1 :(得分: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;
}