如何制作此javascript“;“点击即放烟花”;在触摸屏上也工作的代码?

如何制作此javascript“;“点击即放烟花”;在触摸屏上也工作的代码?,javascript,android,ios,touch,touchstart,Javascript,Android,Ios,Touch,Touchstart,我想在我的网站上创建一个简单的临时“快乐2017”页面,我在Code.pen上找到了一个非常有趣的烟花JS代码: 这段代码在鼠标上运行得非常好,因为焰火会在你点击的地方爆炸,但在触摸屏上根本不起作用,这使得它在触摸屏上根本不具有互动性。 我可以看到代码调用mousedown、mousemove和mouseup事件,但不调用touchstart和touchend: if( timerTick >= timerTotal ) { if( !mousedown ) {

我想在我的网站上创建一个简单的临时“快乐2017”页面,我在Code.pen上找到了一个非常有趣的烟花JS代码:

这段代码在鼠标上运行得非常好,因为焰火会在你点击的地方爆炸,但在触摸屏上根本不起作用,这使得它在触摸屏上根本不具有互动性。 我可以看到代码调用mousedown、mousemove和mouseup事件,但不调用touchstart和touchend:

 if( timerTick >= timerTotal ) {
    if( !mousedown ) {
        fireworks.push( new Firework( cw / 2, ch, random( 0, cw ), random( 0, ch / 2 ) ) );
        timerTick = 0;
    }
} else {
    timerTick++;
}

if( limiterTick >= limiterTotal ) {
    if( mousedown ) {
        fireworks.push( new Firework( cw / 2, ch, mx, my ) );
        limiterTick = 0;
    }
} else {
    limiterTick++;
}

我想这就是问题所在,但作为一个完整的JS noob,我缺乏让它识别触摸坐标的知识。有没有一个简单的方法可以做到这一点?

这是一个建议,可能有效,也可能无效

尝试将其与其他事件关联

在您发送的链接()中,有两个事件侦听器来处理onmousedown和onmouseup事件

尝试用以下代码替换它们:

canvas.addEventListener( 'click', function( e ) {
    e.preventDefault();
    mousedown = true;
  setTimeout(function() {
    mousedown = false;
  }, 20);
});
mousedown只是它用来检查是否正在进行单击的变量。只要这是真的,它就会把目标对准焰火

因此,上面的代码所做的是将整个事件与一个不同的事件点击相关联(有时可以通过屏幕点击进行切换)。单击时,会将mousedown设置为true,计数20毫秒,然后再次将mousedown设置为false


我希望这有帮助!=)

成功了!非常感谢您的快速回答=)
canvas.addEventListener( 'click', function( e ) {
    e.preventDefault();
    mousedown = true;
  setTimeout(function() {
    mousedown = false;
  }, 20);
});