考慮以下MX:文本..如何以編程方式滾動到Flex中的mx:TextArea底部?
<mx:TextArea id="textArea"/>
..被定期地使用文本的新生產線更新..
textArea.text += newLineBeingAdded + "\n";
..我如何確保textarea的滾動下來底部,以便添加的最後一行對用戶可見?
考慮以下MX:文本..如何以編程方式滾動到Flex中的mx:TextArea底部?
<mx:TextArea id="textArea"/>
..被定期地使用文本的新生產線更新..
textArea.text += newLineBeingAdded + "\n";
..我如何確保textarea的滾動下來底部,以便添加的最後一行對用戶可見?
我不知道如何使用Halo TextArea明確地執行此操作,但Spark TextArea有一個scrollToRange方法,可能在此上下文中對您有用。如果您不想使用Spark組件,另一種方法是使用Halo List組件並將每個新行添加爲List的數據提供程序中的新項目。在添加到數據提供者後,您可以調用列表中的scrollToIndex以確保新項目可見。希望有所幫助。
添加文字後成立
callLater(scrollToEnd);
....
function scrollToEnd():void {
textArea.verticalScrollPosition = int.MAX_VALUE;
}
,它應該滾動到年底。
比callLater還要好用invalidateProperties
/commitProperties
。
將光標置於文本的末尾。這也應該滾動顯示光標:
textArea.selectionBeginIndex = textArea.text.length;
textArea.selectionEndIndex = textArea.text.length;
的代碼對我的作品在Flash Builder的4.5.1:
chatroom.scrollToRange(int.MAX_VALUE, int.MAX_VALUE);
酷招,好知道。 – 2010-06-22 20:46:30
薩姆:我嘗試過,但不幸的是,只能滾動到第二個最後一行。似乎這種方法有時可能有效,但並非總是如此。 – knorv 2010-06-22 21:02:33
在添加新文本之後,但在設置verticalScrollPosition之前,您可以嘗試調用validateNow(),以便TextArea知道新文本的大小。 – joshtynjala 2010-06-22 21:36:49