nodejs를 사용하여 게임을 만듭니다. 이번에는 Delete를 사용할 수 없습니다. 그것은 작동하지 않으며 나는 왜인지 전혀 모른다.자바 스크립트를 삭제해도 원하는 속성이 삭제되지 않습니다.
delete Bullet.list[i]
그리고 Bullet.list
이 특성이 선을 실행 한 후 목적은, 원하는 특성이 제거되지 :
I는이 광고를 수행한다.
여기 (여기 아래 맥락에서 위의 코드 라인을 볼 수 있습니다) 내 코드입니다 :
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)를 사용하고 있기 때문에 ... –