#actionscript-3
#actionscript-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, чтобы он работал немного медленнее. Как я мог это сделать?
кстати, я довольно новичок и нашел этот код в учебнике, это эффект набора текста, если есть лучший способ сделать это, пожалуйста, дайте мне знать.
Комментарии:
1. Инструкции Sleep не имеют особого смысла в языке, основанном на асинхронных событиях. Однако есть несколько библиотек псевдопоточности для as3, но я сомневаюсь, что это то, что вы хотите.
Ответ №1:
Использовать таймер:
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 каждую секунду ровно столько раз, сколько длина массива.
Ответ №2:
Я не говорю, что это лучше, чем метод таймера, просто вариант
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--;
}