我正在写一个flex应用程序,它涉及非常频繁地修改textarea。我遇到了textarea的问题,有时不会显示我的修改。Flex textarea控件没有正确更新
以下ActionScript代码说明我的问题:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" minWidth="955" minHeight="600">
<mx:TextArea x="82" y="36" width="354" height="291" id="textArea" creationComplete="initApp()"/>
<mx:Script>
<![CDATA[
private var testSentence:String = "The big brown fox jumps over the lazy dog.";
private var testCounter:int = 0;
private function initApp():void {
var timer:Timer = new Timer(10);
timer.addEventListener(TimerEvent.TIMER, playSentence);
timer.start();
}
private function playSentence(event:TimerEvent):void {
textArea.editable = false;
if (testCounter == testSentence.length) {
testCounter = 0;
textArea.text += "\n";
}
else {
textArea.text += testSentence.charAt(testCounter++);
}
textArea.editable = true;
}
]]>
</mx:Script>
</mx:Application>
当你运行Flex项目上面的代码中,应该反复印刷,字符为单位,句子“大的棕色狐狸跳过懒惰狗。”。但是,如果您在同一时间输入到textarea中,您将注意到计时器打印的文本失真。
我真的很好奇为什么会发生这种情况。 Flex的单线程性质和禁用用户输入textarea当我进行修改应该防止这种情况发生,但由于某种原因,这似乎并没有工作。
我必须注意的是,当以较大的间隔(大约100ms)运行计时器时,它似乎完美工作,所以我很想在Flex框架的内部中认为这是某种同步问题。
关于什么可能导致问题的任何想法?
非常感谢Jeremy!该代码现在可以在修改之后完美地工作,而无需增加帧速率。 增加帧速率后,我也意识到它并没有真正解决问题,但它有助于尽可能避免它。 – ielashi 2010-04-29 14:41:03
没有问题。祝你好运。 – 2010-04-29 19:44:45