2009-12-29 110 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 。高度不是。