我有一个创建对象的函数,并将其作为ID保存在另一个对象中:
var enemyList = {}; //global var
Enemy = function () {
var id = Math.random(); //random id
var enemy = {
some properties
};
enemyList.id = enemy;
}
现在,我找到了#循环'在线搜索和我编辑,以更新包含敌人对象ref的每个id:
setInterval(update, 40); //execute update all the time
var frameCount = 0; //global var
function update {
if (frameCount % 100 === 0) // spawns new enemy every 4 seconds
Enemy();
for (var key in enemyList) {
enemyList.key.update(); //move them around...
}
}
每4秒创建一个新的敌人,然后该循环应该按照某种逻辑移动每个敌人......事情是,一旦创造了新的敌人,它就会取代旧的敌人,四处移动然后是被下一个产生的敌人所取代,即使它不应该是因为它们有独特的ID。为什么会这样? 谢谢你的时间。
答案 0 :(得分:2)
当你说
时<select class="browser-default">
<option value="" disabled selected>Select a Manga</option>
<option></option>
</select>
<select class="browser-default">
<option value="" disabled selected>Chapter</option>
<option></option>
</select>
<select class="browser-default">
<option value="" disabled selected>Page</option>
<option></option>
</select>
您实际上是将enemyList.id = enemy;
对象设置为enemy
对象的id
属性,而不是创建值为enemyList
的新属性。应该是
id
同样适用于enemyList[id] = enemy;
循环。
for
其他建议:
enemyList[key].update();
将获取for..in
对象的所有可枚举,继承属性,而不仅仅是其上的属性。因此,在其中包含enemyList
条件并不常见,例如
if
for (var key in enemyList) {
if (enemyList.hasOwnProperty(key)) // make sure it is the own property
enemyList.key.update(); // move them around...
}
表示setInterval(update, 40);
每40毫秒执行一次,而不是update
秒。所以,应该是4