小游戏渲染bug
发布于 6 年前 作者 weihao 4307 次浏览 来自 问答

上次报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);
}
回到顶部