2009-12-29 46 views
0

這裏是場景:我等待一個mx:Text對象發生creationComplete事件,此時我可以訪問其受保護成員textField的setTextFormat方法。 (直到creationComplete,textField纔有效。)此時,通過textField.setTextFormat完成的文本格式增加了文本的高度。但是,在我調用invalidateSize之前,mx:Text本身並沒有選擇這個高度變化。但是,在我的情況下,invalidateSize會導致整個文本重新繪製,導致它在屏幕上閃爍。但是,如果我只是手動更改瀏覽器窗口大小,則文本高度更改不會像這樣閃爍。所以當我手動更改瀏覽器窗口大小時,如何通過函數調用完成發生的事情。 (我只是希望m​​x:Text能夠通過textfield.setTextFormat獲取高度變化。)沒有屏幕閃光的InvalidateSize?

回答

0

您是否嘗試將文本字段放置在精靈或動畫片段中,並使用回調縮放它?

+0

容器和子對象等存在複雜的結構,無法更改。我所知道的是,現在如果我在有問題的Text對象上調用invalidateSize,它將調整大小,但是屏幕閃爍不可接受。如果我只是手動調整瀏覽器的大小,文本控件也會調整大小,但不會顯示屏幕。所以問題是,當我手動調整瀏覽器大小時,會發生什麼情況,以及如何在代碼中執行此操作以使Text對象改變其高度,而不會在我調用invalidateSize時出現文本的荒謬閃爍。 – Mark 2009-12-29 23:46:56

+0

括號內,我認爲有一個原因是Mx:Text的textfield屬性是受保護的,因爲它不完全與mx:Text完全同步,成爲其公共接口的一部分。但是由於setTextFormat只能通過textField訪問,所以我必須使用它。所以不知何故,mx:文本本身需要被告知,「嘿,你的身高已經發生了變化,因爲你的textField屬性發生了什麼。」但如果我通過Text.invalidateSize()來做到這一點,我得到了我不想要的屏幕閃光。 – Mark 2009-12-29 23:51:32

0

到invertedspear

我其實可以通過調用

txt1.invalidateSize();  
    txt1.validateNow(); 
立即

來電後txt1.ui_txtfld(),以避免屏幕閃爍。調用setTextFormat(....)

(ui_txtfld()是我如何使受保護的屬性textField可見)。

但是,在我的代碼中的其他地方,也有必要不引用txt1.height直接,而是

(txt1.ui_txtfld()。textHeight不同+ 4)* txt1.scaleY,

作爲txt1.textField.textHeight屬性有效改變包含textField的高度後立即,而TXT1 。高度不是。