最核心的两句话:
textContainer.scroller.viewport.verticalScrollPosition=textContainer.scroller.viewport.contentHeight;
textContainer.validateNow();
<?xml version="1.0" encoding="utf-8"?> <s:TitleWindow xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300"> <s:layout> <s:BasicLayout/> </s:layout> <fx:Script> <![CDATA[ protected function button1_clickHandler(event:MouseEvent):void { var interval:uint=100; var repeat:uint=60; var myTimer:Timer=new Timer(interval,repeat); myTimer.addEventListener(TimerEvent.TIMER, timerHandler); myTimer.start(); function timerHandler(event:TimerEvent):void { textContainer.text+="abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"; textContainer.scroller.viewport.verticalScrollPosition=textContainer.scroller.viewport.contentHeight; textContainer.validateNow(); } } ]]> </fx:Script> <fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> </fx:Declarations> <s:TextArea x="10" y="10" id="textContainer"/> <s:Button x="10" y="169" label="开始滚动" click="button1_clickHandler(event)"/> </s:TitleWindow>