nodejsを使用してゲームを作成しています。今度は、私はDeleteを使うことができません。それは動作していないと私は理由が分からない。Javascriptの削除で目的のプロパティが削除されない
私はこの行を実行:
delete Bullet.list[i]
そしてBullet.list
はプロパティを持つオブジェクトであり、このラインを実行した後、所望の特性が除去されません。
はここ(あなたがここで以下のコンテキストで上記のコード行を見ることができます)私のコードです:
var Map = require("./Map.js")
var Player = require("./Player.js");
var Bullet = require("./Bullet.js");
var Fly = require("./Fly.js");
var Settings = require("./Settings.js");
var Simulation = function(SOCKET_LIST){
//Update Bullets
for(var i in Bullet.list){
var bullet = Bullet.list[i];
bullet.update();
var shooter = Player.list[bullet.parent];
//Bullets collide with flies
for(var i in Fly.list){
var fly = Fly.list[i];
if(!bullet.toRemove && bullet.getDistance(fly) < 15){
if(shooter){
shooter.updateCoins(fly.killCoins);
shooter.updateXp(fly.killXp);
}
bullet.toRemove = true;
fly.toRemove = true;
}
}
//Collide with player
for(var i in Player.list){
var player = Player.list[i];
if(player.death) continue;
if(!bullet.toRemove && bullet.getDistance(player) < 32 && shooter !== player.id && shooter.team != player.team && !player.immune){
player.hp -= 1;
player.hpChanged = true;
if(player.hp <= 0){
if(shooter)
player.kill(shooter);
else
player.kill();
}
bullet.toRemove = true;
}
}
//Collide with map
if(typeof shooter == "undefined" || shooter.shootsCollideMap && Map.isColliding(bullet))
bullet.toRemove = true;
//Remove bullets
if(bullet.toRemove){
delete Bullet.list[i]; /*HERE IS THE PROBLEM. THE PROPERTY IS NOT BEING DELETED*/
Bullet.removePack.push[bullet.id];
}
}
私は、プロパティの「i」オブジェクトからBullet.listを削除することはできませんよ。
[削除の理解](http://perfectionkills.com/understanding-delete/)をお読みください。 'Bullet.list'は配列かオブジェクトですか? Javascriptの 'delete'の主な目的は、オブジェクトのプロパティを削除することです(配列から要素を削除しない)。 – jfriend00
@ jfriend00 Bullet.listは、キーがbullet.idであるオブジェクトです。私はこのような箇条書きにアクセスすることができます:var Bullet = Bullet.list [bullet.id]。 bullet.idは配列インデックスではない乱数です。 –
@ vol7ron私が削除を使用しようとしているのは、Bullet.listがオブジェクトであるからです。私はそれが明らかだったので私は言及しなかった...私もBullet.listのvar iのために使っています。 –