html52.com
我爱小程序-开发者交流社区

Canvas引起定时器不准的问题?

我用一个定时器time = setInterval(animation, animation_interval);绘图:

// 动画函数
				function animation() {
					console.log(`间隔时间:${Date.now()-that.startTime}`)
					if (step <= n) {
						end = end + 2 * Math.PI / n;
						ringMove(start, end);
						step++;
						
					} else {
						clearInterval(time);
					}
				};
				// 画布绘画函数
				function ringMove(s, e) {
					let stTime = Date.now();
					
					var context = wx.createCanvasContext('secondCanvas')


					var gradient = context.createLinearGradient(200, 100, 100, 200);
					gradient.addColorStop("0", "#2661DD");
					gradient.addColorStop("0.5", "#40ED94");
					gradient.addColorStop("1.0", "#5956CC");


					// 绘制圆环
					context.setStrokeStyle('#f6cbf4')
					context.beginPath()
					context.setLineWidth(10)
					context.arc(42, 42, 30, s, e, true)
					context.stroke()
					context.closePath()


					// 绘制倒计时文本
					context.beginPath()
					context.setLineWidth(1)
					context.setFontSize(30)
					context.setFillStyle('#ffffff')
					context.setTextAlign('center')
					context.setTextBaseline('middle')
					context.fillText(n - num + '', 42, 42, 30)
					context.fill()
					context.closePath()


					context.draw()


					// 每完成一次全程绘制就+1
					num++;
					
					console.log(`绘制时间:${Date.now()-stTime}`)
				}


var animation_interval = 500 //500毫秒

console输出:

绘制时间:76

canvasDemo.js:184 间隔时间:3307

canvasDemo.js:229 绘制时间:1

canvasDemo.js:184 间隔时间:4219

canvasDemo.js:229 绘制时间:2

canvasDemo.js:184 间隔时间:5212

canvasDemo.js:229 绘制时间:5

canvasDemo.js:184 间隔时间:6237

在真机调试时,虽然绘制时间很短,但定时器设置为500ms时,定时器定时间隔超出500毫秒,近1秒,微信集成环境下调试正常(定时器间隔500ms),啥情况??

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

真正的个人免签约支付接口

云免签H5支付