Martin
Martin

Reputation: 362

ActionScript repeat action after

I'm trying to reload xml file in to variable every let's say 10 seconds. I've tried numerous tutorials on timers but each and every one of them, waits the timer time, and then it repeats the actions each milisecond or so.

var timer:Timer = new Timer(10000);
timer.addEventListener(TimerEvent.TIMER, onTimer);
timer.start();

function onTimer(evt:TimerEvent):void {
    trace("10 seconds");
}

What I want to simply do, is watch this repeat each 10 seconds, but so far, it waits 10 secnds, then it puts "10 seconds" in trace like every milisencod ...

I've been struggeling with this ActionScript thing for such a long time and it seems to me, it must be pretty simple thing to do nope?

Thanks for your time, Mart

Upvotes: 1

Views: 677

Answers (3)

prototypical
prototypical

Reputation: 6751

You most likely have this code in your frame and it's creating a new timer & listener EVERY frame :

var timer:Timer = new Timer(10000);
timer.addEventListener(TimerEvent.TIMER, onTimer);
timer.start();

Upvotes: 0

The_asMan
The_asMan

Reputation: 6402

You have a frame issue and I think you are not running the debugger version of player.
Try this.

var timer:Timer = new Timer(10000, 1); // Add a 1 to repeat count
timer.addEventListener(TimerEvent.TIMER_COMPLETE, function(evt:TimerEvent):void {trace("10 seconds");});
timer.start();

Upvotes: 0

Jonny Henly
Jonny Henly

Reputation: 4213

Try using TimerEvent.TIMER_COMPLETE instead of TimerEvent.TIMER like so :

var timer:Timer = new Timer(10000, 1); // Add a 1 to repeat count
timer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
timer.start();

function onTimerComplete(evt:TimerEvent):void {
    trace("10 seconds");
    timer.reset(); // Reset the timer count back to 0
    timer.start(); // Start the timer again
}

The above code repeats every ten seconds, the below code triggers once after ten seconds and does not trigger again :

var timer:Timer = new Timer(10000, 1); // Add a 1 to repeat count
timer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
timer.start();

function onTimerComplete(evt:TimerEvent):void {
    trace("10 seconds");
}

Upvotes: 1

Related Questions