AS3 TextField autoscroll to the bottom

2019-02-10 10:01发布

How to autoscroll to the bottom of the TextField in ActionScript while adding text there programmatically:

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

Also consider that the vertical scrolling of the TextField should be enabled, and once a new text was added then autoscroll to the bottom should be executed again.

2条回答
闹够了就滚
2楼-- · 2019-02-10 10:25

You can use the scrollV and maxScrollV properties of TextField:

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;
}
查看更多
虎瘦雄心在
3楼-- · 2019-02-10 10:35

You should listen for Event.CHANGE event on the TextField in question. Event description relative to textField And if you capture this event, you play with scrollV property. Say, like this:

_output.addEventListener(Event.CHANGE,scrollAllDown);
function scrollAllDown(e:Event):void {
    var tf:TextField=(e.target as TextField);
    if (!tf) return; 
    tf.scrollV=tf.maxScrollV;
}

Update: Catching Event.CHANGE does not work, I leave this in case someone stumbles on this method and too finds out it doesn't work. So, the only way is to subclass the TextField and manually override appendText() method to include scrolling, like this:

public class OutputTF extends TextField 
{ 
    // constructor omitted
    override public function appendText(text:String):void 
    { super.appendText(text); this.scrollV=this.maxScrollV; } 
}
查看更多
登录 后发表回答