flash on 2013-2-23
♥0 |
Line 106 |
Modified 2013-02-24 13:48:06 |
MIT License
archived:2017-03-29 13:06:46
| (replaced)
ActionScript3 source code
/**
* Copyright ohisama ( http://wonderfl.net/user/ohisama )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/yNYs
*/
package
{
import Box2D.Collision.b2AABB;
import Box2D.Collision.Shapes.b2CircleDef;
import Box2D.Collision.Shapes.b2PolygonDef;
import Box2D.Collision.Shapes.b2Shape;
import Box2D.Common.Math.b2Vec2;
import Box2D.Dynamics.b2Body;
import Box2D.Dynamics.b2BodyDef;
import Box2D.Dynamics.b2World;
import Box2D.Dynamics.Joints.b2MouseJoint;
import Box2D.Dynamics.Joints.b2MouseJointDef;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.filters.BlurFilter;
import flash.system.Security;
import org.papervision3d.core.data.UserData;
import org.papervision3d.core.effects.view.ReflectionView;
import org.papervision3d.core.geom.TriangleMesh3D;
import org.papervision3d.core.proto.MaterialObject3D;
import org.papervision3d.events.InteractiveScene3DEvent;
import org.papervision3d.materials.BitmapFileMaterial;
import org.papervision3d.materials.ColorMaterial;
import org.papervision3d.materials.special.CompositeMaterial;
import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.materials.WireframeMaterial;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.objects.primitives.*;
import org.papervision3d.cameras.CameraType;
import org.papervision3d.view.BasicView;
public class Sample extends BasicView
{
public var m_world : b2World;
public var sd : b2CircleDef;
public var bd : b2BodyDef;
public var cube : TriangleMesh3D;
public var b : b2Body;
public var RADIUS : Number = 5;
public var BAR_SIZE : Number = 5;
Security.loadPolicyFile("http://assets.wonderfl.net/crossdomain.xml");
public var path : String = "http://assets.wonderfl.net/images/related_images";
public var filename : String = path + "/3/35/3590/359061d357d721a573fae94cc4d8b2819a72122c";
public function Sample()
{
init_box2d();
init_papervision();
createBox();
addEventListener(Event.ENTER_FRAME, update);
}
public function init_box2d() : void
{
var worldAABB : b2AABB = new b2AABB();
worldAABB.lowerBound.Set(-100.0, -100.0);
worldAABB.upperBound.Set(100.0, 100.0);
m_world = new b2World(worldAABB, new b2Vec2(0.0, 10.0), true);
var groundSd : b2PolygonDef = new b2PolygonDef();
var groundBd : b2BodyDef = new b2BodyDef();
var groundB : b2Body;
groundBd.angle = -30 / 180 * Math.PI;
groundSd.SetAsBox(BAR_SIZE * 5, BAR_SIZE * 5);
groundB = m_world.CreateBody(groundBd);
groundB.CreateShape(groundSd);
groundB.SetMassFromShapes();
sd = new b2CircleDef();
bd = new b2BodyDef();
sd.density = 1.0;
sd.radius = RADIUS;
}
public function init_papervision() : void
{
var material : MaterialObject3D = new WireframeMaterial();
var mlist : MaterialsList = new MaterialsList({all : material});
var u : Number = BAR_SIZE * 5 * 4;
var ground : Cube = new Cube(mlist, u * 5, u * 5, u * 5, 5, 5, 5);
ground.rotationZ = -30;
scene.addChild(ground);
//viewport.interactive = true;
}
public function createBox() : void
{
var materialTop : BitmapFileMaterial = new BitmapFileMaterial(filename);
cube = new Cylinder(materialTop, RADIUS * 10, RADIUS * 10 * 4, 8 * 2, 6, -1, true, true);
cube.rotationX = 90;
scene.addChild(cube);
bd.position.Set(0, -50);
b = m_world.CreateBody(bd);
b.CreateShape(sd);
b.SetMassFromShapes();
}
public function update(e : Event) : void
{
m_world.Step(1.0 / 30, 10);
if (b.IsFrozen())
{
bd.position.Set(0, - 50);
b = m_world.CreateBody(bd);
b.CreateShape(sd);
b.SetMassFromShapes();
}
var p : b2Vec2 = b.GetPosition();
cube.x = - p.x * 10;
cube.y = - p.y * 10;
cube.rotationZ = b.GetAngle() * 180 / Math.PI;
singleRender();
}
}
}