Phaser - 显示图形对象 50 毫秒,并在同时按下一个或多个按键时销毁每个按键

Phaser - Show graphic objects for 50ms and destroy for each key press when one or more key presses occur simultaneously

我想在用户按下某个键时为 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);


}

您的第二次绘制调用(在不到 50 毫秒的时间内完成)似乎在图形中分配了一个不同的对象,因此当第一次绘制调用的超时回调被触发时,它会在第二次调用中创建的图形上运行。

要避免它您可以:
1) 用图形做一个局部变量(add var/let)
2) 使用 graphics.destroy.bind(graphics) 作为超时回调