Basically what I’m trying to do is keep the enemies spawning at the same rate. I get it to work kind of but when I toggle the speed there is a gap between spawns. I figure this is because the timer resets to the new delay. I’m working on a tower defense game and I’m trying to get the fast forward button to work. I made a simple example of the problem I’m having so that I could explain a little better. Any advice on a better way of doing it or how to fix this problem would be very much appreciated. Thanks guys! :pleased:
(you can just copy n paste the code in flash to see what I’m talking about)
import flash.display.*;
import flash.events.*;
import flash.utils.*;
var enemyTimer:Timer;
var enemySpawnRate:Number = 800;
var enemies:Array = new Array();
var doubleSpeed:Boolean = false;
stage.addEventListener(Event.ENTER_FRAME, loop);
stage.addEventListener(MouseEvent.CLICK, toggleSpeed);
enemyTimer = new Timer(enemySpawnRate);
enemyTimer.addEventListener(TimerEvent.TIMER, spawn);
enemyTimer.start();
function spawn(e:TimerEvent):void
{
var enemy:MovieClip = new MovieClip();
enemy.graphics.beginFill(0);
enemy.graphics.drawRect(0,0,25,25);
enemy.graphics.endFill();
enemy.x = stage.stageWidth/2 - enemy.width/2;
enemy.y = -enemy.height;
if(!doubleSpeed)
enemy.velocity = 4;
else
enemy.velocity = 8;
addChild(enemy);
enemies.push(enemy);
}
function toggleSpeed(e:MouseEvent):void
{
if(!doubleSpeed)
{
enemyTimer.delay = 400;
for(var i:int = 0; i < enemies.length; i++)
{
enemies*.velocity = 8;
}
doubleSpeed = true;
}
else
{
enemyTimer.delay = 800;
for(i = 0; i < enemies.length; i++)
{
enemies*.velocity = 4;
}
doubleSpeed = false;
}
}
function loop(e:Event):void
{
//move enemies
for(var i:int = 0; i < enemies.length; i++)
{
enemies*.y += enemies*.velocity;
if(enemies*.y > stage.stageHeight)
{
removeChild(enemies*);
enemies.splice(i,1);
}
}
}