我正在使用类型记录与Javascript库来制作一个交通模拟器。现在,我想知道红绿灯亮了多久了。在我的代码中,如果控制灯光变量颜色的某个布尔值为真,交通灯将改为绿色。我在想,如果我能够测量这个布尔变量被设置为true的时间。这样我就可以返回红绿灯的持续时间。我的代码太长了,无法将它们全部张贴在上面。但是有一些与设置交通灯相关的代码:
intersection类实例的数组。intersection类下面的代码将受到影响:
若(this.NS == true){ this.right = "rgba(255,0,0,0.4)";this.left = "rgba(255,0,0,0.4)";this.top =“rgba(0,250,0,0.4)”;this.bottom =“rgba(0,250,0,0.4)”;intersection类中下面的代码将受到影响,以绘制交通灯:
this.ctx.save();if(this.top == "rgba(0,255,0,0.4)"){ //green var shadow_color = 'rgba(0,255,0,1)';}{ var shadow_color =‘rgba(255,0,1)’;}//sole.log();this.ctx.fillStyle = shadow_color;this.ctx.shadowColor = shadow_color this.ctx.shadowOffsetY = -2;this.ctx.shadowBlur = 2;/** *右交通信号灯在顶部*/ this.ctx.fillRect(this.x+4,本-2,6,6);this.ctx.fill();this.ctx.restore();this.ctx.shadowOffsetX =未定义;this.ctx.shadowBlur =未定义;
ctx就是CanvasRenderingContext2D。我能测量绿灯亮了多长时间吗?发布于 2017-11-20 07:46:45
我想,这样做是没有办法的。使用一个setInterval,并一直检查变量的值,直到它改变为止。
let value = true;
let time = 0;
let previousValue = value;
const resolution = 1000; // 1 second
const handle = setInterval(() => {
previousValue === value ? time += resolution : clearInterval(handle);
}, resolution);time的值以毫秒为单位。这大约是它第一次修改时的持续时间。
https://stackoverflow.com/questions/47386887
复制相似问题