
Oscylacja w poziomie
Listing
window.requestAnimFrame = (function(callback) {
return window.requestAnimationFrame
|| window.webkitRequestAnimationFrame
|| window.mozRequestAnimationFrame
|| window.oRequestAnimationFrame
|| window.msRequestAnimationFrame
|| function(callback) {
window.setTimeout(callback, 1000 / 42);
};
})();
function drawRectangle(rectangle, context) {
context.beginPath();
context.rect(rectangle.x, rectangle.y, rectangle.width,
rectangle.height);
context.fillStyle = 'red';
context.fill();
context.lineWidth = rectangle.borderWidth;
context.strokeStyle = 'black';
context.stroke();
};
function animate(rectangle, canvas, context, startTime) {
var time = (new Date()).getTime() - startTime;
var amplitude = 150;
var period = 2000;
var centerX = canvas.width / 2 - rectangle.width / 2;
var nextX = amplitude * Math.sin(time * 2 * Math.PI / period)
+ centerX;
rectangle.x = nextX;
context.clearRect(0, 0, canvas.width, canvas.height);
drawRectangle(rectangle, context);
requestAnimFrame(function() {
animate(rectangle, canvas, context, startTime);
});
};
var cv = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var rectangle = {
x : 0,
y : 75,
width : 100,
height : 50,
borderWidth : 2
};
drawRectangle(rectangle, ctx);
setTimeout(function() {
var startTime = (new Date()).getTime();
animate(rectangle, cv, ctx, startTime);
}, 500);
