Yes, you are right that the clocks increments ITSELF after the last time it was reset.
There is a tiny problem in the way you are testing whether the correct amount of time has passed.
You code looks like this:
// Spawn Rings
time += ElapsedTime;
if (time >= DELAY_TIME)
{
// Add ring sprite to the ringSpawn vector
ringVec.push_back(Ring);
// Give that ring a random y co ordiante
spawnIterator->SetX(0);
spawnIterator->SetY(rand_Y);
// Increment iterator
spawnIterator++;
// Reset the clock
Clock.Reset();
}
The problem is that when you first start the game, the elapsed time is very very small.
Instead of that, change your code to this:
// Spawn Rings
time += Clock.GetElapsedTime();
if (time >= DELAY_TIME)
{
// Add ring sprite to the ringSpawn vector
ringVec.push_back(Ring);
// Give that ring a random y co ordiante
spawnIterator->SetX(0);
spawnIterator->SetY(rand_Y);
// Increment iterator
spawnIterator++;
// Reset the clock
Clock.Reset();
}
That way, the time between spawns will always be DELAY_TIME, even if there is lag suddenly somewhere. In the first example, you take a snapshot of the time taken for one loop at the very beginning of the game, before the main loop has started, This will always be a VERY small number.
This should fix some of the errors you are getting.
I'm not sure what you did after the first post, but what I suggested shouldn't have caused that at all.