功能不正常

时间:2013-04-24 11:10:04

标签: javascript dom canvas

当敌人射击激光时,我的功能有问题。我已经对此做了很多调试,我只是无法弄清楚它为什么不起作用。

当我有这样的代码时,它会射到我的playArea的顶部但不会到底部(边界拼写错误,因为我从一开始就完成了)

for (var i = 0; i < enemylasers.length; i++){
        if(parseInt(enemylasers[i][0].style.top) > playArea.topBoundry){
            enemylasers[i][1] -= laserSpeed;
            enemylasers[i][0].style.top = enemylasers[i][1] + 'px';
        }else{
            playArea.removeChild(enemylasers[i][0]);
            enemylasers.splice(i,1);
        }
    }

当我将一些代码更改为我认为可能正确的代码时,它不会让激光器在任何地方拍摄。这就是我改变它的原因。

for (var i = 0; i < enemylasers.length; i++){
        if(parseInt(enemylasers[i][0].style.top) > playArea.bottomBoundry){
            enemylasers[i][1] += laserSpeed;
            enemylasers[i][0].style.top = enemylasers[i][1] + 'px';
        }else{
            playArea.removeChild(enemylasers[i][0]);
            enemylasers.splice(i,1);
        }
    }

这就是创造我的敌人激光的原因

function createenemylaser(){
    if(enemylasers.length < enemymaxlasers){ 
            var laserpush = Math.floor(Math.random()*enemies.length);
            var laser = enemylaser();
            laser.classList.add('enemylaser');
            laser.style.top = enemies[laserpush][1] + 'px';
            laser.style.left = parseInt(enemies[laserpush][0].offsetLeft) +'px';
            playArea.appendChild(laser);
            enemylasers.push([laser, enemies[laserpush][1]]);
    }
}
    setInterval(createenemylaser, 2000);

这是我的敌人激光阵列

enemylasers=[],
    enemylaserspeed = 5,
    enemymaxlasers= 8,

这就是为我的敌人激光创造div的原因

function enemylaser(){
    return document.createElement('div');
}

我希望有人可以提供帮助,我不是那些经验丰富的javascript但我知道安静的abit。

1 个答案:

答案 0 :(得分:0)

由于@ Chips_100建议我应该从评论部分发布我的解决方案,这里是:

您需要将parseInt(enemylasers[i][0].style.top) > playArea.bottomBoundry更改为parseInt(enemylasers[i][0].style.top) < playArea.bottomBoundry,因为您已经改变了激光器的行进方向。