Flex scroll自動追蹤文字

2022-11-24 16:57:47 字數 1222 閱讀 7900

最近做了一個類似qq聊天面板的東西,在做的時候遇到了一些問題,於是記錄下來,一是對其他人的幫助,另外也是一個回顧。

面板的佈局設計在此不贅述,直接講我的問題。我們都知道qq的聊天面板有一個scroll,我們輸入文字的時候它會自動地跟隨文字滾到最下面。我通過如下方法實現:1. 使用updatecomplete事件;2. 使用容器的verticalscrollposition屬性對scroll進行定位。

updatecomplete在容器的任何視覺改動的情況下都會發生,當然也包括新增了新的元件(我通過新增新元件實現聊天資訊的即時展示)。於是我們有如下**:

vbox

1<

mx:vbox

id="vd"

updatecomplete

="updatecompletehandler(event)"

x="20"

y="10"

height

="275"

width

="376"

>

2mx:vbox

>

1private function updatecompletehandler(evt:event):void

2但是這樣就會產生一個問題,當我想在這個vbox中回看聊天記錄的時候我會拖動scroll向上翻,這時無論我如何滾動scroll,面板中的內容永遠都是最後的內容,因為每次滾動scroll 面板中的檢視發生變化,updatecomplete事件就會觸發,所以不管怎麼滾動scroll都會重新被定位到最低端。

我的解決辦法是給面板新增一個event.scroll事件。新增如下內容:

**1private var isautoverticalscrollpolicy:boolean=true;23

private function init():void47

89private function ontxtscroll(event:event):void

然後將之前的updatecompletehandler方法修改如下:

1private function updatecompletehandler(evt:event):void2

6}至於什麼時候把isautoverticalscrollpolicy設定成true,我是在點選傳送按鈕和接收到新的資訊之後修改的,因為我們只有在聊天內容改變的時候才希望觸發updatecomplete事件,把scroll定位到低端。

以上是我個人的一個解決方案,歡迎更好的思路和方案。

flex中文字型支援

在flex中是不支援中文字型的,不過flash中的textfield卻是支援中文的,於是使用flex component kit把flash中的textfield打包成一個swc檔案,然後在flex中使用。可是問題又來了。在flash中如果把textfield預設定 為中文字型的話,在flex中使用...