我想在用户按下某个键时显示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);
}
答案 0 :(得分:2)
看起来你的第二次绘制调用(时间少于50ms)会在图形中分配一个不同的对象,因此当第一次绘制调用的超时回调被触发时,它会对第二次调用中创建的图形进行操作。
要避免它你可以:
1)从图形中创建局部变量(添加var / let)
2)使用graphics.destroy.bind(graphics)作为超时回调