Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JavaScript动态移动创建的图像_Javascript_Html_Css - Fatal编程技术网

使用JavaScript动态移动创建的图像

使用JavaScript动态移动创建的图像,javascript,html,css,Javascript,Html,Css,我已经学习JavaScript大约2个月了,我正在尝试制作一个简化版的太空入侵者。基本上,在包含游戏的div底部有一艘左右移动的宇宙飞船。小行星来自顶部,你必须通过撞击空格键向它们射击。我设法使子弹正确地产生,但我无法使它们缓慢地向上移动 这就是我用来制造子弹的方法: function spawnBullet(evento) { if (evento.charCode==32) { newBullet=document.createElement("i

我已经学习JavaScript大约2个月了,我正在尝试制作一个简化版的太空入侵者。基本上,在包含游戏的
div
底部有一艘左右移动的宇宙飞船。小行星来自顶部,你必须通过撞击空格键向它们射击。我设法使子弹正确地产生,但我无法使它们缓慢地向上移动

这就是我用来制造子弹的方法:

  function spawnBullet(evento) {
        if (evento.charCode==32) {
            newBullet=document.createElement("img");
            newBullet.classList.add("bullet");
            newBullet.setAttribute("src", "images/bullet.png");
            newBullet.setAttribute("style", "left: "+parseInt(parseInt(document.getElementById("spaceship").style.left)+15)+"px");
            document.getElementById("spaceWrap").appendChild(newBullet);
            bullets.push(newBullet);
        }
    }
其中
项目符号
基本上是一个对象数组,包含当前屏幕上的每个项目符号,参数
evento
通过容器
div
上的
onkeypress=“event”
传递

以下是
项目符号
类的CSS:

.bullet {
    width: 10px;
    position: absolute;
    top: -10px;
    display: block;
}
现在是运动:

function moveBulletsTimer() {
    bulletTimer=setInterval(moveBullets, 100);
}

function moveBullets() {
    for (var i=0; i<=bullets.length-1; i++) {
        if (bullets[i].style.top<=document.getElementById("gameWindow").style.height)
            bullets[i].style.top=parseInt(bullets[i].style.top)-10+'px';
        else {
            bullets[i].remove();
            bullets.pop(bullets[i]);
        }
    }
}
函数moveBulletsTimer(){
bulletTimer=setInterval(移动项目符号,100);
}
函数moveBullets(){

对于(var i=0),使用此代替StTealStay-Exchange以便于演示此方法。请考虑使用<代码> SETimeR()/<代码>而不是<代码> SETIN()/代码>。每次调用“代码> MOVEBUBSUBSH())/代码>,调用另一个调用<代码> SETIMER()处理下一个动画帧。这将避免@ J.NoHurBER在他的代码引用中标识的问题。尝试此而不是StTealTimeExchange,以便于为此演示提供一个简单的方法。考虑使用<代码> SETimeR()/<代码>而不是<代码> SETIN()/代码>。
被调用时,再次调用
setTimer()
以处理下一个动画帧。这将避免@JonHerbert在其代码引用中识别的问题。