52
function drawScreen () {
world.Step(1 / 60, 10, 10);
world.DrawDebugData();
world.ClearForces();
}
theCanvas = document.getElementById('canvasOne');
context = theCanvas.getContext('2d');
var b2Vec2 = Box2D.Common.Math.b2Vec2
, b2BodyDef = Box2D.Dynamics.b2BodyDef
, b2Body = Box2D.Dynamics.b2Body
, b2FixtureDef = Box2D.Dynamics.b2FixtureDef
, b2World = Box2D.Dynamics.b2World
, b2PolygonShape = Box2D.Collision.Shapes.b2PolygonShape
, b2CircleShape = Box2D.Collision.Shapes.b2CircleShape
, b2DebugDraw = Box2D.Dynamics.b2DebugDraw;
var world = new b2World(new b2Vec2(0,10), true);
var numBalls = 50;
var balls = new Array();
for (var i=0; i < numBalls; i++) {
var ballDef = new b2BodyDef;
ballDef.type = b2Body.b2_dynamicBody;
var ypos = (Math.random() * 8)+1;
var xpos = (Math.random() * 14)+1;
var size = (Math.random() * .4)+.2;
ballDef.position.Set(xpos, ypos);
var ballFixture = new b2FixtureDef;
ballFixture.density = 10.0;
ballFixture.friction = 0.5;
ballFixture.restitution = 1;
ballFixture.shape = new b2CircleShape(size);
var newBall = world.CreateBody(ballDef)
newBall.CreateFixture(ballFixture);
balls.push(newBall);
}
var wallDefs = new Array({x:8.3,y:.03,w:8.3 ,h:.03}, //top
{x:8.3,y:13.33,w:8.3 ,h:.03}, //bottom
{x:0,y:6.67,w:.03 ,h:6.67}, //left
{x:16.7,y:6.67,w:.03 ,h:6.67} ); //right
var walls = new Array();
for (var i = 0; i <wallDefs.length; i++) {
var wallDef = new b2BodyDef;
wallDef.type = b2Body.b2_staticBody;
wallDef.position.Set(wallDefs[i].x, wallDefs[i].y);
var newWall = world.CreateBody(wallDef)
var wallFixture = new b2FixtureDef;
wallFixture.density = 10.0;
wallFixture.friction = 0.5;
wallFixture.restitution = 1;
wallFixture.shape = new b2PolygonShape;
wallFixture.shape.SetAsBox(wallDefs[i].w, wallDefs[i].h);
newWall.CreateFixture(wallFixture);
288 | Chapter 5: Math, Physics, and Animation