Canvas Test Spiral
Testing some stuff
by joquery
HTML
<canvas id="myCanvas" width="300" height="200"></canvas>
<div>
<button id="start">Start</button>
<button id="stop">Stop</button>
<button id="next">Next</button>
<button id="reset">Reset</button>
</div>
CSS
#myCanvas {
background: #fafaee;
}
JavaScript
var context;
var canvas;
var drawInterval = 1000.0 / 30.0;
var duration = 2;
var stepping = 1 / (duration * drawInterval);
var intervalId;
var progress = 0.0;
var lastSnake = 0;
var draw = function() {
if (progress + stepping > 1) {
progress = 1;
} else {
progress += stepping;
}
var w = canvas.width;
var h = canvas.height;
context.save();
context.beginPath();
//////////////////
var canvasMidW = w/2;
var canvasMidH = h/2;
var snakeCount = 10;
var snakeHeight = h / snakeCount;
if (lastSnake % 2 === 0) {
console.log("left to right");
var newWidth = (snakeCount * w * progress) - (lastSnake * w);
context.moveTo(0, lastSnake * snakeHeight);
context.lineTo(newWidth, lastSnake * snakeHeight);
context.lineTo(newWidth, lastSnake * snakeHeight + snakeHeight);
context.lineTo(0, lastSnake * snakeHeight + snakeHeight);
context.closePath();
} else {
console.log("right to left");
var newWidth = -(snakeCount * w * progress) + ((lastSnake + 1) * w);
context.moveTo(w, lastSnake * snakeHeight);
context.lineTo(newWidth, lastSnake * snakeHeight);
context.lineTo(newWidth, lastSnake * snakeHeight + snakeHeight);
context.lineTo(w, lastSnake * snakeHeight + snakeHeight);
context.closePath();
}
if (progress > ( (lastSnake +1) / snakeCount)) {
lastSnake += 1;
console.log("increment lastSnake: " + lastSnake);
}
//////////////////
context.clip();
context.rect(0,0,canvas.width,canvas.height);
context.fillStyle="red";
context.fillRect(0,0,canvas.width,canvas.height);
if (progress === 1) {
clearInterval(intervalId);
}
context.restore();
};
var startAnimation = function() {
intervalId = setInterval(draw,...