小游戏渲染bug
上次报bug并没有得到重视,最新的6.7.2并没有修复这个问题.
- 当前 Bug 的表现(可附上截图)
安卓版微信在渲染快速移动的显示对象时,有时会无视物体的真实位置,回到上一帧画面,造成停停顿顿的画面动画.ios版微信不会出现这个问题.个人猜测是安卓版本的双缓冲或者画面缓存机制有点问题.
- 预期表现
显示对象渲染时,应该位于当时当刻的位置.
- 复现路径
使用安卓手机打开代码片段,注意白色块的移动,每个移动周期都会随机在某个时刻,画面渲染回到上一帧.
- 代码
requestAnimationFrame(loop) let canvas = wx.createCanvas( '2d' ); let ctx = canvas.getContext( '2d' ); ctx.font = '18px' ; ctx.fillStyle = '#FFFFFF' ; let offlineCanvas = wx.createCanvas( '2d' ); let offlineCtx = offlineCanvas.getContext( '2d' ); offlineCtx.fillStyle = '#ffffff' ; offlineCtx.fillRect(0,0,100,400); let moveX = 0; function loop() { ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.fillText( '白块移动的渲染,有时回到上一帧画面.' ,0,75); ctx.fillText( '安卓6.6.7版本必现, ios无这个问题.' , 0, 100); ctx.drawImage(offlineCanvas, moveX,200); moveX = (moveX < -200) ? canvas.width : moveX-4; requestAnimationFrame(loop); } |