1

これはある程度機能していますが、y 位置が 200 未満で始まる場合にのみ tempBullet オブジェクトを削除します。ステージのさらに下のどこかでスポーンされた後にそのポイントに到達した場合ではありません。

        if(firing && bulletTimeOut == 0)
        {
            var tempBullet = new Bullet();
            bullets.push(tempBullet);
            tempBullet.x = x;
            tempBullet.y = y-10;
            stage.addChild(tempBullet);
            trace(bullets.length);
            if(tempBullet.y < 200)
            {
                bullets.splice(tempBullet, 1);
                stage.removeChild(tempBullet);
            }
            bulletTimeOut = 5;
        }
4

1 に答える 1

0

このコードはループで発生していますか?

自分の位置を確認するだけでなく、tempBullet弾丸配列全体をループして、200pxを超えた弾丸を削除するつもりだったと思います。

if(firing && bulletTimeOut == 0)
{
    var tempBullet = new Bullet();
    bullets.push(tempBullet);
    tempBullet.x = x;
    tempBullet.y = y-10;
    stage.addChild(tempBullet);
    trace(bullets.length);
    bulletTimeOut = 5;
}
// test bullet positions whether firing or not
for each (b:Bullet in bullets) {
    if(b.y < 200)
    {
        bullets.splice(b, 1);
        stage.removeChild(b);
    }
}
于 2013-01-20T20:31:36.687 に答える