0

プレイヤーがランダムに落下するオブジェクトを避けなければならないゲームを作成しています。一時停止を実装する方法がわかりません。私はこれに2日間立ち往生しています!

gotoAndPlay などを使用してみましたが、オブジェクトはバックグラウンドで実行され続けます。ゲームを再開すると、それらはまだ落下しており、フレームがリセットされ、新しいランダムな落下オブジェクトがロードされているようです。

var steps:Number = 10;
var spriteX:Number = 280;
var spriteY:Number = 650;
var alienCounter=1;
var asteroidCounter=1;
var live:Number=3;
var depthLevel=3000;
var score:Number = 0;
var gamePaused;
dropTimer=setInterval(createAlien,2000);
drpTimer2=setInterval(createAsteroid,1000);
//---- functions ----
function checkKeys() 
{
if (Key.isDown(Key.RIGHT)) 
{
spriteX += steps;
}
else if (Key.isDown(Key.LEFT)) 
{
spriteX -= steps;
}
}
function updateSpaceship() 
{
ship._x = spriteX;
ship._y = spriteY;
}
function createAlien()
{
    var curr_alien;
    curr_alien=attachMovie("alien","alien"+alienCounter,depthLevel);
    curr_alien._y=40;
    curr_alien._x=Math.random()*510+20;
    curr_alien._xscale=curr_alien._yscale=50;
    curr_alien.speed=Math.random()*10+3;
    alienCounter+=1;
    depthLevel+=1;
    curr_alien.onEnterFrame=alienMove;
}
function alienMove()
{
    if(!gamePaused)
    {
    this._y+=this.speed;
    if(this.hitTest(ship))
    {
        score += 1;
        trace(score);
        removeMovieClip(this);
    }
    }
}
function createAsteroid()
{
        var curr_asteroid;
        curr_asteroid=attachMovie("asteroid","asteroid"+asteroidCounter,depthLevel);
        curr_asteroid._y=40;
        curr_asteroid._x=Math.random()*510+20;
        curr_asteroid._xscale=curr_asteroid._yscale=50;
        curr_asteroid.speed=Math.random()*10+3;
        asteroidCounter+=1;
        depthLevel+=1;
        curr_asteroid.onEnterFrame=asteroidMove;
}
function asteroidMove()
{
    if(!gamePaused)
    {
    this._y+=this.speed;
    if(this.hitTest(ship))
    {
        live -= 1;
        trace(live);
        removeMovieClip(this);
        if(live<=0)
        {   
            gotoAndPlay(5);
        }
    }
    }

}
this.onEnterFrame = function() 
{
        checkKeys();
        updateSpaceship();
        if(Key.isDown(80))
        {
            if(!gamePaused)
            {
                gamePaused=true;
                gotoAndPlay(4);
            }
            else
            {
                gamePaused=false;
                gotoAndStop(3);
            }
        }
};

ボタンを使用しようとすると解決策が見つからないため、代わりにキーを使用することにしました。一時停止機能が期待どおりに機能しません。一時停止するにはキー 'p' を数回入力する必要がありますが、再開するときにフレームがリセットされてランダムなオブジェクトが読み込まれることは望ましくありません。

4

2 に答える 2