Apache flex 在没有屏幕闪烁的情况下失效?

Apache flex 在没有屏幕闪烁的情况下失效?,apache-flex,actionscript-3,Apache Flex,Actionscript 3,下面是一个场景:我等待mx:Text对象的creationComplete事件发生,此时我可以访问其受保护成员textField的setTextFormat方法。(textField在creationComplete之前无效。)此时,通过textField.setTextFormat进行的文本格式设置会增加文本的高度。但是在我调用invalidateSize之前,mx:Text本身不会接受这个高度变化。但是,在我的例子中,invalidateSize会导致整个文本被重新绘制,从而导致它在屏幕上闪

下面是一个场景:我等待mx:Text对象的creationComplete事件发生,此时我可以访问其受保护成员textField的setTextFormat方法。(textField在creationComplete之前无效。)此时,通过textField.setTextFormat进行的文本格式设置会增加文本的高度。但是在我调用invalidateSize之前,mx:Text本身不会接受这个高度变化。但是,在我的例子中,invalidateSize会导致整个文本被重新绘制,从而导致它在屏幕上闪烁。但是,如果我只是手动更改浏览器窗口的大小,文本高度的更改不会像那样闪烁文本。那么,当我手动更改浏览器窗口大小时,如何通过函数调用完成所发生的事情呢。(我只想让mx:Text拾取通过textfield.setTextFormat完成的高度更改。)

您是否尝试将您的textfield放在精灵或movieclip中,并用回调缩放它?

到默认值

事实上,我可以通过打电话来避免屏幕闪烁

  txt1.invalidateSize();    
  txt1.validateNow();
在调用txt1.ui_txtfld().setTextFormat(..)之后

(ui_txtfld()是我使受保护属性文本字段可见的方式。)

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

(txt1.ui_txtfld().textHeight+4)*txt1.scaleY


因为txt1.textField.textHeight属性在更改textField的高度后立即有效,而txt1.height则不有效。

现有的容器和子对象等复杂结构无法更改。我所知道的是,现在如果我在讨论中的文本对象上调用invalidateSize,它会调整大小,但会出现不可接受的屏幕闪烁。如果我只是手动调整浏览器的大小,文本控件也会调整大小,但没有屏幕闪烁。所以问题是,当我手动调整浏览器的大小时会发生什么,我如何在代码中做到这一点,使文本对象更改其高度,而不会出现调用invalidateSize时出现的荒谬的文本闪烁。顺便说一下,我认为Mx:Text的textfield属性受到保护是有原因的,因为它与mx:Text不完全同步,无法成为其公共界面的一部分。但由于setTextFormat只能通过textField访问,所以我必须使用它。所以现在,不知何故,mx:Text本身需要被告知,“嘿,你的高度已经改变,因为你的textField属性中发生了一些事情。”但如果我通过Text.invalidateSize()这样做,我会得到屏幕闪光灯,这是我不想要的。