Добавление дочернего элемента AS3 по истечении заданного времени

#actionscript-3 #timer #addchild

#actionscript-3 #таймер #addchild

Вопрос:

Для игры, которую мы создаем, нам нужно, чтобы видеоролик «всплывал» через определенное время, обычно где-то между 10 и 20 секундами. Если появляется этот видеоролик, таймер необходимо приостановить, пока видеоролик активен, и таймер необходимо перезапустить после исчезновения видеоролика. Кто-нибудь знает, как это сделать?

Ответ №1:

 import flash.utils.setTimeout;

// Your Sprite / MovieClip
var clip:MovieClip;
// The time until you want to add the first one
var timeToAdd:uint = Math.random() * 20;
// This will be the timer
var _timer:uint;

// This will add us to the stage after the random time. Second variable is seconds, so we need to multiply by 1000.
_timer = setTimeout(addToStage, timeToAdd * 1000);

// Called when the timer expires
function addToStage():void{
    clip = new MovieClip();
    // You would need logic to decide when to remove it, but once it is removed this will fire
    clip.addEventListener(Event.REMOVED_FROM_STAGE, onRemove);
}

// Called once removed
function onRemove(e:Event):void{
    // Remove the event listener
    clip.removeEventListener(Event.REMOVED_FROM_STAGE, onRemove);
    // Restart the timer
    timeToAdd = Math.random() * 20;
    _timer = setTimeout(addToStage, timeToAdd * 1000);
}
 

Приведенный выше код добавит спрайт на сцену один раз в течение 0,001 — 20 секунд. Вам нужно будет добавить немного кода, чтобы удалить ваш спрайт (removeChild (clip)).

Комментарии:

1. Мне пришлось поместить _timer в функцию, чтобы это работало, но это отлично работает, большое вам спасибо! 🙂