移相器 - 当一个或多个按键同时发生时,显示图形对象50ms并销毁每次按键

时间:2017-03-16 17:47:49

标签: javascript graphics settimeout phaser-framework

我想在用户按下某个键时显示50ms的矩形。 draw()函数按单个按键操作正常工作。如果同时按下多个键,同时说两个键,则其中一个图形对象不会被破坏。

function draw(x, y){
    graphics = game.add.graphics(x, y);
    graphics.clear()
    graphics.lineStyle(2, 0x0000FF, 1);
    graphics.beginFill(0x0000FF, 0.5);
    graphics.drawRect(0,0,18,18);
    graphics.endFill(0x0000FF, 0.5);
    // destroy the graphics after 50 ms
    setTimeout(function (){graphics.destroy()}, 50);


}

1 个答案:

答案 0 :(得分:2)

看起来你的第二次绘制调用(时间少于50ms)会在图形中分配一个不同的对象,因此当第一次绘制调用的超时回调被触发时,它会对第二次调用中创建的图形进行操作。

要避免它你可以:
1)从图形中创建局部变量(添加var / let)
2)使用graphics.destroy.bind(graphics)作为超时回调