canvas-resize-flicker
HTML
<div>
<canvas id="canvas"/>
</div>
<div>
<input id="width" type="range" min="0" max="500" style="width:500px"/>
</div>
JavaScript
var canvas = document.getElementById('canvas'),
context = canvas.getContext('2d'),
slider = document.getElementById('width'),
width = 400;
context.strokeStyle = 'red';
canvas.width = slider.value = 400;
slider.onchange = function() {
var tempCanvas = document.createElement('canvas');
tempCanvas.width = context.canvas.width;
tempCanvas.height = context.canvas.height;
var tempContext = tempCanvas.getContext("2d");
tempContext.drawImage(context.canvas, 0, 0);
canvas.width = parseInt(slider.value);
context.drawImage(tempContext.canvas, 0, 0);
};
var render = function() {
context.strokeStyle = 'red';
var t = new Date().getTime();
context.clearRect(0, 0, canvas.width, canvas.height);
context.fillStyle = 'black';
context.fillRect(0, 0, canvas.width, canvas.height);
for (var m = 1; m < 5; m++) {
context.beginPath();
for (var x = 0; x < canvas.width; x++) {
var halfHeight = canvas.height/2,
y = Math.sin((t * m)/500 + x/10)*halfHeight + halfHeight;
context.lineTo(x, y);
}
context.stroke();
}
};
var animate = function() {
render();
window.requestAnimationFrame(animate);
};
animate();