まず、while文の仕様について確認しましょう。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/while
while文は『判定式がtrueの間、処理を繰り返す』です。
判定式がfalseを返すとループを中断します。
問題は以下の通りです。
1. 判定式で代入『condition = true』している。
2. 本来ループを止めたいとき(hideでないとき)に逆にtrueを設定している。
修正案です。
仕様を完全に理解していないので要件通りに動作するとは限りませんが、無限ループは解消されると思います。
コード: 全て選択
var condition = true;
while (condition) {
this.clear();
this._troopId = troopId;
this._enemies = [];
condition = true;
this.troop().members.forEach(function(member) {
if ($dataEnemies[member.enemyId]) {
var randomEnemyId = [];
randomEnemyId = selectEnemyId($dataEnemies[member.enemyId]);
var enemyId = member.enemyId;
var x = member.x;
var y = member.y;
if (randomEnemyId === 0) {
var enemy = new Game_Enemy(enemyId, x, y);
enemy.hide();
} else if (randomEnemyId) {
var enemy = new Game_Enemy(randomEnemyId, x, y);
condition = false;
} else {
var enemy = new Game_Enemy(enemyId, x, y);
condition = false;
};
if (member.hidden) {
enemy.hide();
};
this._enemies.push(enemy);
};
}, this);
this.makeUniqueNames();
}