当敌方飞机移动到最底部时,删除该敌方飞机
用父节点.removeChild(子节点)删除敌方飞机失败
报错:
// 删除敌方飞机
function del(){
for(let i=0;i<enemyArry.length;i++){
if(enemyArry[i].planeNode.offsetHeight+enemyArry[i].planeNode.offsetTop>650){
main.removeChild(enemyArry[i].planeNode);
}
if(enemyArry[i].blood==0){
main.removeChild(enemyArry[i].planeNode);
console.log("死亡");
}
// console.log(j);
}
}
enemyArry数组中包含多个多个敌方飞机对象,敌方飞机对象中包含节点、图片路径、速度等等
原因: main.removeChild(enemyArry[i]);只删除了对象中的飞机节点,数组显示为
enemyArry[
{""(之前节点所在的位置),图片路径,速度}
]
该飞机的对象仍未删除,循环执行到这个位置时,因为找不到该对象的节点而报错。
改正:删除节点后,也要删除该对象
function del(){
for(let i=0;i<enemyArry.length;i++){
if(enemyArry[i].planeNode.offsetHeight+enemyArry[i].planeNode.offsetTop>650){
main.removeChild(enemyArry[i].planeNode);
enemyArry.splice(i,1);
}
if(enemyArry[i].blood==0){
main.removeChild(enemyArry[i].planeNode);//删除节点
enemyArry.splice(i,1);//删除对象
console.log("死亡");
}
// console.log(j);
}
}