正如您所注意到的,在执行您编写的函数的过程中不会发生对程序显示输出的更改。ActionScript 是单线程的,这意味着更新屏幕的任何框架代码都不能在您的函数运行时运行。
如果您有兴趣确切了解为了更新屏幕会发生什么,请搜索“flex 组件生命周期”并阅读您找到的一些内容。它有点高级,但它确实帮助我理解了 Flex 框架的工作原理。
无论如何,关于你真正的问题 - 如何制作动画。有很多方法,但是对于您逐步将文本添加到标签的情况,我可能会使用Timer
该类。
这是一个例子:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
private var timer:Timer;
private var words:Array = ["The", "quick", "brown", "fox"];
private function startTimer(event:FlexEvent):void
{
timer = new Timer(1000, 1);
timer.addEventListener(TimerEvent.TIMER, updateText);
timer.start();
}
private privatefunction updateText(event:TimerEvent):void
{
theLabel.text += words.shift() + " ";
if (words.length > 0)
{
timer.reset();
timer.start();
}
}
]]>
</fx:Script>
<s:Label id="theLabel" text="" creationComplete="startTimer(event)"/>
</s:Application>