Skip to content

Instantly share code, notes, and snippets.

@nielsdoorn
Created June 21, 2012 15:49
Show Gist options
  • Save nielsdoorn/2966570 to your computer and use it in GitHub Desktop.
Save nielsdoorn/2966570 to your computer and use it in GitHub Desktop.
A web page created at CodePen.io
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Bouncing rectangle on canvas &middot; CodePen</title>
<link rel="stylesheet" href="http://codepen.io/stylesheets/css/normalize.css">
<style>
#wrapper {
margin: 0 auto;
width:1024px;
}
#bounce {
margin-top:10px;
width:1024px;
height:200px;
background-color:black;
color:white;
line-height:300px;
text-align:center;
}
</style>
<style>
#codepen-footer, #codepen-footer * {
-webkit-box-sizing: border-box !important;
-moz-box-sizing: border-box !important;
box-sizing: border-box !important;
}
#codepen-footer {
display: block !important;
position: fixed !important;
bottom: 0 !important;
left: 0 !important;
width: 100% !important;
padding: 0 10px !important;
margin: 0 !important;
height: 30px !important;
line-height: 30px !important;
font-size: 12px !important;
color: #eeeeee !important;
background-color: #505050 !important;
text-align: left !important;
background: -webkit-linear-gradient(top, #505050, #383838) !important;
background: -moz-linear-gradient(top, #505050, #383838) !important;
background: -ms-linear-gradient(top, #505050, #383838) !important;
background: -o-linear-gradient(top, #505050, #383838) !important;
border-top: 1px solid black !important;
border-bottom: 1px solid black !important;
border-radius: 0 !important;
box-shadow: inset 0 1px 0 #6e6e6e, 0 2px 2px rgba(0, 0, 0, 0.4) !important;
z-index: 300 !important;
font-family: "Lucida Grande", "Lucida Sans Unicode", Tahoma, sans-serif !important;
letter-spacing: 0 !important;
word-spacing: 0 !important;
}
#codepen-footer a {
color: #a7a7a7 !important;
text-decoration: none !important;
}
#codepen-footer a:hover {
color: white !important;
}
</style>
<script src="http://codepen.io/javascripts/libs/prefixfree.min.js"></script>
</head>
<body>
<div id="wrapper">
<canvas id="bounce" width="1024" height="200"> </canvas>
</div>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
(function() {
var canvas;
var x,y,rotatie,xVerplaatsing,yVerplaatsing;
function init() {
canvas = document.getElementById("bounce");
x = canvas.width / 2;
y = canvas.height / 2;
rotatie = 0;
xVerplaatsing = 1;
yVerplaatsing = 1;
}
function initAnimation() {
// animatie
// vraag aan de browser om maximaal 60 fps te animeren
window.requestAnimFrame = (function(callback){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function(callback){
window.setTimeout(callback, 1000 / 60);
};
})();
(function animloop(){
requestAnimFrame(animloop);
verplaatsBlokje();
tekenScherm();
})();
}
function verplaatsBlokje() {
x = x + xVerplaatsing;
y = y + yVerplaatsing;
if (x < 0 || x > canvas.width) {
xVerplaatsing = 0-xVerplaatsing;
}
if (y < 0 || y > canvas.height) {
yVerplaatsing = 0-yVerplaatsing;
}
rotatie = rotatie + 0.01;
rotatie = rotatie % (Math.PI * 2);
}
// het tekenen van het scherm
function tekenScherm() {
var ctx = canvas.getContext("2d");
// canvas leeg maken, het canvas is 800px breed en 640px hoog
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.save();
ctx.translate(x,y);
ctx.rotate(rotatie);
tekenBlokje(ctx);
ctx.restore();
}
function tekenBlokje(ctx) {
ctx.fillStyle = "red";
ctx.fillRect(-20,-20,40,40);
}
$(document).ready(function () {
console.log('doc ready');
init();
initAnimation();
});
})();
</script>
<div id="codepen-footer">
<a style="color: #f73535 !important;" href="https://codepen.wufoo.com/forms/m7x3r3/def/field14=" onclick="window.open(this.href, null, 'height=517, width=680, toolbar=0, location=0, status=1, scrollbars=1, resizable=1'); return false">Report Abuse</a>
&nbsp;
<a href="/nielsdoorn/pen/bouncebounce/14">Edit this Pen</a>
</div>
</body>
</html>
var canvas;
var x,y,rotatie,xVerplaatsing,yVerplaatsing;
function init() {
canvas = document.getElementById("bounce");
x = canvas.width / 2;
y = canvas.height / 2;
rotatie = 0;
xVerplaatsing = 1;
yVerplaatsing = 1;
}
function initAnimation() {
// animatie
// vraag aan de browser om maximaal 60 fps te animeren
window.requestAnimFrame = (function(callback){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function(callback){
window.setTimeout(callback, 1000 / 60);
};
})();
(function animloop(){
requestAnimFrame(animloop);
verplaatsBlokje();
tekenScherm();
})();
}
function verplaatsBlokje() {
x = x + xVerplaatsing;
y = y + yVerplaatsing;
if (x < 0 || x > canvas.width) {
xVerplaatsing = 0-xVerplaatsing;
}
if (y < 0 || y > canvas.height) {
yVerplaatsing = 0-yVerplaatsing;
}
rotatie = rotatie + 0.01;
rotatie = rotatie % (Math.PI * 2);
}
// het tekenen van het scherm
function tekenScherm() {
var ctx = canvas.getContext("2d");
// canvas leeg maken, het canvas is 800px breed en 640px hoog
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.save();
ctx.translate(x,y);
ctx.rotate(rotatie);
tekenBlokje(ctx);
ctx.restore();
}
function tekenBlokje(ctx) {
ctx.fillStyle = "red";
ctx.fillRect(-20,-20,40,40);
}
$(document).ready(function () {
console.log('doc ready');
init();
initAnimation();
});
<div id="wrapper">
<canvas id="bounce" width="1024" height="200"> </canvas>
</div>
#wrapper {
margin: 0 auto;
width:1024px;
}
#bounce {
margin-top:10px;
width:1024px;
height:200px;
background-color:black;
color:white;
line-height:300px;
text-align:center;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment