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