나는 cordova를 사용하여 Android 용 하이브리드 javascript 앱을 개발 중입니다.
다음 코드에서는 캔버스에 이미지를 그리는 두 가지 방법을 사용합니다 : setTimeout
없이.
안드로이드 장치의 코드 (코드 바 포장)는 func1
에서 반응하지 않지만 func2
에서 반응합니다. func1
의 두 번째 클릭은 마침내 캔버스에 이미지를 그립니다. 완전히 이상합니다.자바 스크립트 캔버스로 이미지를 그릴 수 없습니다.
필자는 데스크톱 PC에서 두 기능 모두 정상적으로 작동하므로 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>
멋지다! 너! – 31415926