Фаза 3: уничтожение всех экземпляров спрайта - PullRequest
0 голосов
/ 24 января 2019

Так что я пытаюсь заставить мою игру выгрузить кучу неиспользуемых ресурсов. Это оказывается намного сложнее. вот мой код:

 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 голосов
/ 25 января 2019

Почти наверняка проблема с областью действия, и для определения основной причины недостаточно исходного кода. Но meteorCap выглядит опасно, как локальная переменная, поэтому чтение из spawnMeteor не сработает.

Кроме того, не используйте setInterval, буквально есть функция TimerEvents, встроенная в Phaser API для именно этого, которая безопасна на этапе игры и управляет контекстом контекста для вас. Вот один такой пример.

...