我想畫一條線然後等待幾毫秒然後再畫下一條線等待下一條線等等,這樣它就可以看出它將如何逐行繪製(如ECG波形)。 如何在這段代碼中做到這一點? 這是我的代碼:不能在javascript中等待幾毫秒
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
var ms = 0;
var y=5;
var x=5;
var copyendx=0;
var copyendy=0;
var context;
var temp,total=0;
//var data=new Array(-1,3,-3,-7,5,1,-1,-3,2,5,7,7,7,7,1,3,3,4-,8,5,6,6,7,7);
var data=new Array(-1,3,-3,-7,5,1,-1,-3,2,5,7,7,7,7,4,7,9,2,2,8);
//alert(data);
function init() {
var graphCanvas = document.getElementById('graphSpace');
context =graphCanvas.getContext('2d');
drawgraph();
}
function drawgraph() {
drawLine(context,5,50,5,250);
drawLine(context,5,150,7,150);
// setTimeout(drawgraph(),600);
for (var i=0;i<data.length;i++) {
var startx=5+x;
var starty=150-(data[i]*y);
var endx=(5+x)+1;
var endy=150-(data[i]*y);
if (i==0) {
copyendx=endx;
copyendy=endy;
startx=5+x;
starty=150;
}
//draw line and wait for some milliseconds
setInterval(function() {
drawLine(context,startx,starty,copyendx,copyendy); }, 100);
drawLine(context,startx,starty,copyendx,copyendy);
x=x+5;
// pausecomp(100);
copyendx=endx;
copyendy=endy;
}
}
}
//Draw line function
function drawLine(contextO, startx, starty, endx, endy) {
contextO.beginPath();
contextO.moveTo(startx, starty);
contextO.lineTo(endx, endy);
contextO.closePath();
contextO.stroke();
}
</script>
</head>
<body onload="init()">
<canvas id="graphSpace" width="800" height="400" style="background-color: #ffff00;"></canvas>
</body>
</html>
我已經在使用setInterval
setInterval(function() {
drawLine(context,startx,starty,copyendx,copyendy);
}, 100);
試過,但我沒有得到期望的輸出。 我想等待幾毫秒,然後爲每個線條圖調用方法drawLine(contextO, startx, starty, endx, endy)
我得到了解決上述問題的方法。我有以下問題
如果我想在畫布上繪製更多點,如果這些點不適合我的畫布寬度,我正在重畫畫布,但這裏是我的圖形看起來不穩定的問題(如ECG波形應用)在第一次重繪期間它看起來較慢,在第二次重繪期間它看起來比第一次重繪更快,在第三次重繪期間它看起來比第二次重繪更快,等等。 如何克服?我需要穩定的流程,直到我畫出最後一個圖形點。
用'setTimeout' –