2011-04-13 87 views
3

我有一個簡單的動作功能actionscript 3睡眠?

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所以它是一個稍微慢一點之後睡覺。我怎麼能這樣做?

順便說一句,我是相當新的,發現這個代碼的教程,這是一個文字輸入效果,如果有更好的方式做到這一點,請讓我知道。

+0

睡眠言論並沒有多大意義的異步事件爲基礎的語言。然而,as3有一些僞線程庫,但我懷疑這就是你想要的。 – bgw 2011-04-13 23:40:16

回答

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--; 
}