I have an explosion clip, which is done in the code, because I randomize the direction and number of debris from the explosion, so this is a one-frame clip, and the entire animation is executed in code. The problem is that I am trying to pause the game from the main timeline when the player presses "p". I have it right now, so it turns the variable gamePaused = true and calls the pauseGame () function, which stops everything else. However, I do not know how to access the gamePaused variable from the explosion fragment code. If I can somehow check this variable in the clip, I can pause this animation until the player presses p again.
So, how do I access a variable in the main timeline from a clip?
Also, to indicate that all these explosions were created as Sprites in the main timeline code, I did not like any solutions that I found on the Internet. So just keep that in mind.
Here is the main timeline code:
function createExplosion(explosionX, explosionY, explosionSize):void{<br>
var explosionSprite:Sprite = new Sprite;
addChild(explosionSprite);
var explosionPic:explosionSym = new explosionSym;
explosionSprite.addChild(explosionPic);<br>
<br>
if (explosionSize == 3){<br>
explosionSprite.x = explosionX + 15;<br>
explosionSprite.y = explosionY + 15;<br>
}<br>
else if (explosionSize == 2){<br>
explosionSprite.x = explosionX + 5;<br>
explosionSprite.y = explosionY + 5;<br>
}<br>
else if (explosionSize == 1){<br>
explosionSprite.x = explosionX;<br>
explosionSprite.y = explosionY;<br>
}<br>
<br>
explosion[explosionsOnScreen] = explosionSprite;
explosionTimeLeft[explosionsOnScreen] = 0;
}
function explosionTimer(evt:TimerEvent):void{
var M:int = 0;
for (M = 0; M < explosionsOnScreen; M++){
explosionTimeLeft[M]++;
if (explosionTimeLeft[M] > 15){
explosion[M].parent.removeChild(explosion[M]);
explosion.splice(M, 1);
explosionTimeLeft.splice(M, 1);
explosionsOnScreen -= 1;
break;
}
}
}
function spawnBullets():void{<br>
var M:int = 0;<br>
randomDebrisNumber = (Math.round(Math.random() * 3) + 3);
for (M = 0; M <= randomDebrisNumber; M++){
var debrisSprite:Sprite = new Sprite;
addChild(debrisSprite);
var debrisBullet:bulletSym = new bulletSym;
debrisSprite.addChild(debrisBullet);
debrisSprite.x = 0;
debrisSprite.y = 0;
debris[M] = debrisSprite;
do {
debrisX[M] = ((Math.random() * 2 - 1) * 3);
debrisY[M] = ((Math.random() * 2 - 1) * 3);
} while ((debrisX[M] > -0.1 && debrisX[M] < 0.1) || (debrisY[M] > -0.1 && debrisY[M] < 0.1))
}
}
function handleMoveDebris(evt:TimerEvent):void{<br>
var M:int = 0;<br>
debrisTimerCount++;
if (debrisTimerCount <= 15){
for (M = 0; M <= randomDebrisNumber; M++){
debris[M].x += debrisX[M];
debris[M].y += debrisY[M];
}
}
else if (debrisTimerCount > 15){
for (M = randomDebrisNumber; M >= 0; M--){
debris[M].parent.removeChild(debris[M]);
debris.splice(M, 1);
debrisX.splice(M, 1);
debrisY.splice(M, 1);
}
debrisTimerCount = 0;
timMoveDebris.stop();
}
}
source
share