在组装一个小型画布应用程序时,我偶然发现了一种奇怪的行为,这种行为似乎只发生在 Android 的默认浏览器中。
当绘制到globalCompositeOperation
设置'destination-out'
为充当“橡皮擦”工具的画布时,Android 浏览器有时会按预期运行,有时根本不会更新画布中的像素。
设置:
context.clearRect(0,0, canvas.width, canvas.height);
context.drawImage(img, 0, 0, canvas.width, canvas.height);
context.globalCompositeOperation = 'destination-out';
画一个圆圈来擦除画布上的像素:
context.fillStyle = '#FFFFFF';
context.beginPath();
context.arc(x,y,25,0,TWO_PI,true);
context.fill();
context.closePath();
可以在这里看到一个小演示来说明这个问题:http: //gumbojuice.com/files/source-out/ 和 javascript 在这里: http: //gumbojuice.com/files/source-out/js/main。 js
这已经在多个桌面和移动浏览器中进行了测试,并且表现符合预期。在刷新页面后在Android本机浏览器上有时它可以工作,有时什么也没有发生。
我见过其他将画布移动一个像素以强制重绘的黑客,但这不是一个理想的解决方案。
谢谢大家。