0
我正在为使用cordova的android开发混合javascript应用程序。
在下面的代码中,我使用了两种在画布上绘制图像的方法:使用setTimeout
和不使用。
Android设备上的以下代码(用cordova包裹)不会对func1
做出反应,但会对func2
做出反应。第二次点击func1
最后在画布上绘制图像。 这是完全奇怪的。javascript canvas不绘制图像
我认为它与Android设备的性能有关,因为在我的台式电脑上这两个功能都能正常工作。
为什么会发生这种情况?如何避免使用setTimeout?
<html style="background: white;">
<head>
</head>
<body>
<button onclick="func1()">render img2 func1</button>
<button onclick="func2()">render img2 func2</button><br />
<canvas id="canv">canv</canvas>
<script>
var img = new Image();
var canvas = document.getElementById('canv');
canvas.width = 100;
canvas.height = 100;
var ctx = canvas.getContext("2d");
function setSrc() {
img.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAASUlEQVRo3u3PAQ0AIAwDsIGC+TcLLkhOWgddSU6Ga5udT4iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi8cQEjUgGTmE6z3QAAAABJRU5ErkJggg=="
};
function drawImg() {
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
};
function func1() {
setSrc();
drawImg();
};
function func2() {
setSrc();
setTimeout(function() {
drawImg();
}, 500);
};
</script>
</body>
</html>
令人惊叹! thx,男人! – 31415926