飞机大战:问题1

当敌方飞机移动到最底部时,删除该敌方飞机

用父节点.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);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灰鸦893

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值