flash on 2010-4-25
♥0 |
Line 61 |
Modified 2010-04-25 22:47:47 |
MIT License
archived:2017-03-20 00:53:48
ActionScript3 source code
/**
* Copyright termat ( http://wonderfl.net/user/termat )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/gKDs
*/
package
{
import Box2D.Collision.b2AABB;
import Box2D.Collision.Shapes.b2PolygonDef;
import Box2D.Common.Math.b2Vec2;
import Box2D.Dynamics.b2Body;
import Box2D.Dynamics.b2BodyDef;
import Box2D.Dynamics.b2DebugDraw;
import Box2D.Dynamics.b2World;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
[SWF(width="460", height="460", frameRate="30", backgroundColor="0x000000")]
public class HelloBox2d extends Sprite{
private var world:b2World;
public function HelloBox2d() {
var worldAABB:b2AABB = new b2AABB();
worldAABB.lowerBound.Set(-100, -100);
worldAABB.upperBound.Set(100, 100);
var grav:b2Vec2 = new b2Vec2(0, 10);
world = new b2World(worldAABB, grav, true);
var draw:b2DebugDraw = new b2DebugDraw();
draw.m_sprite = this;
draw.m_drawScale = 100;
draw.m_fillAlpha = 0.3;
draw.m_lineThickness = 1;
draw.m_drawFlags = b2DebugDraw.e_shapeBit;
world.SetDebugDraw(draw);
createGround();
addEventListener(Event.ENTER_FRAME, update);
stage.addEventListener(MouseEvent.MOUSE_DOWN, onDown);
}
private function update(e:Event):void {
world.Step(1 / 30, 10);
}
private function onDown(e:MouseEvent):void {
var xx:Number = (e.stageX - 230) / 230 * 2.0 + 2.5;
var yy:Number = (e.stageY - 230) / 230 * 2.0 + 2.0;
createBox(xx, yy);
}
private function createGround():void {
var groundBody:b2BodyDef = new b2BodyDef();
groundBody.position.Set(2.5, 3);
var groundShape:b2PolygonDef = new b2PolygonDef();
groundShape.SetAsBox(2, 0.1);
var ground:b2Body = world.CreateBody(groundBody);
ground.CreateShape(groundShape);
}
private function createBox(xx:Number, yy:Number):void {
var boxBody:b2BodyDef = new b2BodyDef();
boxBody.position.Set(xx, yy);
var boxShape:b2PolygonDef = new b2PolygonDef();
boxShape.SetAsOrientedBox(0.2*Math.random()+0.05, 0.2*Math.random()+0.05, new b2Vec2(0, 0), Math.random());
boxShape.density = 1;
boxShape.restitution = 0.2;
var box:b2Body = world.CreateBody(boxBody);
box.CreateShape(boxShape);
box.SetMassFromShapes();
}
}
}