actionscript 3 sleep?

3
我有一个简单的ActionScript函数。
var string:String = "TEXT REMOVED";
var myArray:Array = string.split("");
addEventListener(Event.ENTER_FRAME, frameLooper);

function frameLooper(event:Event):void {
    if(myArray.length > 0) {
        text1.appendText(myArray.shift());
    }else{
        removeEventListener(Event.ENTER_FRAME, frameLooper);
    }
}

我希望在调用framelooper后,让它睡眠一段时间,以便使其慢一点。我该如何做?

顺便说一下,我是新手,在教程中发现了这个代码,它是一个文本打字效果,如果有更好的方法,请告诉我。


在异步事件驱动的语言中,Sleep语句并没有太多意义。不过,AS3确实有一些伪线程库,但我怀疑那不是你想要的。 - bgw
2个回答

7

使用计时器:

var string:String = "TEXT REMOVED";
var myArray:Array = string.split("");
var timer : Timer = new Timer (1000, myArray.length);
timer.addEventListener (TimerEvent.TIMER, frameLooper);
timer.start();

function frameLooper(event:Event):void {
    text1.appendText(myArray.shift());
}

这将在每秒钟执行frameLooper,执行次数与数组长度完全相同。


0

我并不是说这种方法比计时器更好,只是另一种选择。

var string:String = "TEXT REMOVED";
var myArray:Array = string.split("");
addEventListener(Event.ENTER_FRAME, frameLooper);

const WAIT_TIME:int = 10;
var i:int = 0;
function frameLooper(event:Event):void {
    if(myArray.length > 0) {
        if(i==0){ 
            trace(myArray.shift()); 
            i = WAIT_TIME;
        };
    } else {
        removeEventListener(Event.ENTER_FRAME, frameLooper);
    }
    i--;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接