相位器3:销毁Sprite的所有实例

时间:2019-01-24 18:34:58

标签: javascript phaser-framework game-development

因此,我正在尝试让我的游戏卸载大量未使用的资源。事实证明它要复杂得多。这是我的代码:

 var meteor = this.physics.add.group();
 this.physics.add.collider(meteor, sput, deathControl, null, this);

 meteorSpawnFrequency = 500;
 setInterval(spawnMeteor, meteorSpawnFrequency);
 var meteorCap = 0;

 function spawnMeteor() {  

 //Create Meteors
    meteorCap++;
    meteors = meteor.create(Math.floor(Math.random() *800) + 1, 30, "meteor");
    //Edit Meteors
    meteors.depth = -1;
    meteors.setVelocityY(500);
    meteors.setScale(Math.floor(Math.random() * 2) + 1);
    meteors.setCollideWorldBounds(true);

    //Destroy meteors after the cap reaches 10
    if(meteorCap > 10){

        meteors.destroy();
        console.log("meteors destroyed");
        meteorCap = 0;

    }
}

我正在使用一个间隔来生成精灵,所有这些都很好。我要做的是设置一个上限,当存在100个流星时,它们将被销毁,然后将上限设置回0,以重复此过程。 唯一的问题是它不起作用。我该如何工作?

1 个答案:

答案 0 :(得分:1)

几乎可以确定范围问题,并且没有足够的源代码来确定根本原因。但是meteorCap看起来像局部变量一样危险,因此无法从spawnMeteor读取它。

此外,请勿使用setInterval,确切地说,Phaser API中内置有TimerEvents功能,这对游戏而言是安全的,并且可以为您管理作用域上下文。 Here is就是这样一个例子。