actionscript 3 переходит в спящий режим?

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