我正在寫一個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