2017-05-06 31 views
1

我有这个AS3脚本(它工作正常),我只是想让循环暂停每秒秒,然后它可以继续循环。就像如果我喜欢它停下来Milliseconds.ThanksFlash AS3,如何暂停一个循环秒

var myText:String; 
 
var counter:int = 0; 
 

 
var format : TextFormat = new TextFormat(); 
 
format.size = 16; 
 
format.font = "Verdana"; 
 
format.bold = true; 
 
format.color = 0x000000; 
 

 
var textField : TextField = new TextField(); 
 
textField.width = 200; 
 
textField.height = 50; 
 
textField.selectable = false; 
 
textField.wordWrap = true; 
 
textField.defaultTextFormat = format; 
 
textField.x = textField.y =0; 
 
addChild(textField); 
 
\t \t \t \t 
 
var textLoader:URLLoader = new URLLoader(new URLRequest("text.txt")); 
 
textLoader.addEventListener(Event.COMPLETE, function(e:Event){initText(e.target.data);}); 
 

 
function initText(string:String):void{ 
 
\t myText = string; 
 
\t addEventListener(Event.ENTER_FRAME, writeText); 
 
} 
 

 
function writeText(e:Event):void{ 
 
\t if (counter <= myText.length){ 
 
    \t  textField.text = myText.substr(0,counter); 
 
    \t  counter++; 
 
     /*What I can put here to make it pause for a while*/ 
 
\t } 
 
\t else{ 
 
\t \t removeEventListener(Event.ENTER_FRAME,writeText); 
 
\t } 
 
}

+0

你可以看看[计时器](http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/utils/Timer.html#includeExamplesSummary)类。尝试使用它来代替ENTER_FRAME来控制文本更新之间的延迟 –

+0

将该函数剪切为两个,并为'root'的'ENTER_FRAME'添加一个侦听器,以稍后运行第二部分。 – iBug

回答

2

你的代码是正确的,你需要调整它一点点。

function initText(string:String):void 
{ 
    myText = string; 
    addEventListener(Event.ENTER_FRAME, writeText); 
} 

// Variable to keep the next print time in milliseconds. 
var nextPrint:int; 

function writeText(e:Event):void 
{ 
    // Function getTimer() returns time in milliseconds since app start. 
    // Skip this frame if time is not right. 
    if (getTimer() < nextPrint) return; 

    // Variable nextPrint is initially 0 so the first char will print immediately. 

    if (counter <= myText.length) 
    { 
     textField.text = myText.substr(0, counter); 
     counter++; 

     /*What I can put here to make it pause for a while*/ 
     // Print next character in ~100 ms. 
     nextPrint = getTimer() + 100; 
    } 
    else 
    { 
     removeEventListener(Event.ENTER_FRAME, writeText); 
    } 
}