如何在以编程方式添加文本的同时,在ActionScript中自动滚动到TextField的底部:
var _output:TextField = new TextField();
for (var i:int = 0; i < 100; ++i) {
_output.appendText("Hello World!");
}
还要考虑应该启用TextField的垂直滚动,并且一旦添加了新文本,就应该再次执行自动滚动到底部。
答案 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;
}