解決!
via http://gihyo.jp/dev/feature/01/box2d/0002
slightly modified by mash
* don't use CreateStatic..., nor CreateDynamic...
click to start.
解決?サーバにつながらないので分からないー.
SetAsOrientedBoxはangleで座標軸を回転させる.
回転させたBoxを作るのではなく,座標軸が回転したBoxを作成する.
よって対応するspriteも別途回転させなければならないー
// forked from yaeda's ずれるなー.SetAs~~がいけないのかな?
// forked from yaeda's Box2D test 1
// forked from mash's Box2D test
// via http://gihyo.jp/dev/feature/01/box2d/0002
// slightly modified by mash
// * don't use CreateStatic..., nor CreateDynamic...
// click to start.
// 解決?サーバにつながらないので分からないー.
// SetAsOrientedBoxはangleで座標軸を回転させる.
// 回転させたBoxを作るのではなく,座標軸が回転したBoxを作成する.
// よって対応するspriteも別途回転させなければならないー
package {
import Box2D.Collision.Shapes.b2PolygonDef;
import Box2D.Collision.b2AABB;
import Box2D.Common.Math.b2Vec2;
import Box2D.Dynamics.b2Body;
import Box2D.Dynamics.b2BodyDef;
import Box2D.Dynamics.b2DebugDraw;
import Box2D.Dynamics.b2World;
import flash.display.DisplayObject;
import flash.display.DisplayObjectContainer;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
/**
* 床の上に箱を落とすFlash
*/
public class DropBox extends Sprite {
private const STAGE_W:int = 465;
private const STAGE_H:int = 465;
private var world:b2World;
private var m_drawScale:Number = 100;
// 画像データ
private const IMAGE_DATA:String = "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";
public function DropBox():void {
// イベントハンドラを登録する
stage.addEventListener(MouseEvent.CLICK, clickHandler);
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
}
private function clickHandler(event:MouseEvent):void {
// remove boxes
if(world){
for(var b:b2Body = world.GetBodyList(); b; b = b.GetNext()) {
var mybox:MyTestBox = b.GetUserData() as MyTestBox;
if(mybox && mybox._boxSprite) {
removeChild(mybox._boxSprite);
}
}
}
////////////////////////////////////////
// 物理エンジンのセットアップ
// 外枠を定義する
var worldAABB:b2AABB = new b2AABB();
worldAABB.lowerBound.Set(-100, -100);
worldAABB.upperBound.Set(100, 100);
// 重力を下方向に9.8m/s^2とする
var gravity:b2Vec2 = new b2Vec2(0, 9.8);
// 外枠と重力を指定して、物理エンジン全体をセットアップする
world = new b2World(worldAABB, gravity, true);
////////////////////////////////////////
// 床の設置
// setting floor at bottom of stage
var floorBodyDef:b2BodyDef = new b2BodyDef();
floorBodyDef.position.Set(STAGE_W/(2*m_drawScale), STAGE_H/m_drawScale);
// 床の形を、幅4m、厚さ20cmとする
// 指定するのはその半分の値
var floorShapeDef:b2PolygonDef = new b2PolygonDef();
floorShapeDef.SetAsBox(STAGE_W/2/m_drawScale, 10/m_drawScale);
// 床を動かない物体として作る
var floor:b2Body = world.CreateBody(floorBodyDef);
floor.CreateShape(floorShapeDef);
// draw floor
var floorSprite:Sprite = new Sprite();
floorSprite.graphics.beginFill(0xFFFFFF*Math.random(), 1);
floorSprite.graphics.drawRect(-STAGE_W/2, -10, STAGE_W, 10*2);
floorSprite.graphics.endFill();
floorSprite.x = STAGE_W/2;
floorSprite.y = STAGE_H;
addChild(floorSprite);
////////////////////////////////////////
// 箱の設置
var nNumBox:int = 5;
var nBoxW:int = 80;
var nBoxH:int = 60;
var nBoxSpan:int = 10;
for(var i:int=0; i<nNumBox; i++) {
// box body definition
var boxBodyDef:b2BodyDef = new b2BodyDef();
boxBodyDef.position.Set(((nBoxW+nBoxSpan)*i+nBoxW/2)/m_drawScale, nBoxH/2/m_drawScale);
// box shape definition
var boxShapeDef:b2PolygonDef = new b2PolygonDef();
var angle:Number = Math.PI/36 - Math.random()*Math.PI/18;
boxShapeDef.SetAsOrientedBox(nBoxW/2/m_drawScale, nBoxH/2/m_drawScale, new b2Vec2(0,0), angle);
boxShapeDef.density = 1;
boxShapeDef.restitution = 0.6;
// create box in the world
var boxBody:b2Body = world.CreateBody(boxBodyDef);
boxBody.CreateShape(boxShapeDef);
boxBody.SetMassFromShapes();
// create sprite for draw
var boxSprite:Sprite = new Sprite();
var display:DisplayObjectContainer = Base64ImageLoader.load(IMAGE_DATA, loaded(boxSprite,nBoxW,nBoxH));
addChild(boxSprite);
var userData:MyTestBox = new MyTestBox;
userData._boxSprite = boxSprite;
userData._angle = angle;
boxBody.m_userData = userData;
}
////////////////////////////////////////
// 描画設定
if(true) {
var debugDraw:b2DebugDraw = new b2DebugDraw();
debugDraw.m_sprite = this;
debugDraw.m_drawScale = m_drawScale; // 1mを100ピクセルにする
debugDraw.m_fillAlpha = 1; // 不透明度
debugDraw.m_lineThickness = 1; // 線の太さ
debugDraw.m_drawFlags = b2DebugDraw.e_shapeBit;
world.SetDebugDraw(debugDraw);
}
}
private function loaded(sprite:Sprite, nW:int, nH:int):Function{
return function(event:Event) {
var img:DisplayObject = event.target.content as DisplayObject;
if(img) {
img.x = -nW/2;
img.y = -nH/2;
img.width = nW;
img.height = nH;
sprite.addChild(img);
}
}
}
private function enterFrameHandler(event:Event):void {
if (world == null) {
return;
}
// Flashはデフォルトで秒間24フレームなので、
// 物理シミュレーションを1/24秒進める
world.Step(1 / 24, 10);
// draw box
for(var b:b2Body = world.GetBodyList(); b; b = b.GetNext()) {
var userData:MyTestBox = b.GetUserData() as MyTestBox;
if(userData) {
var sprite:Sprite = userData._boxSprite;
var angle:Number = userData._angle;
sprite.x = b.GetWorldCenter().x * m_drawScale;
sprite.y = b.GetWorldCenter().y * m_drawScale;
sprite.rotation = (b.GetAngle()+angle) * 180 / Math.PI;
}
}
}
}
}
import flash.display.Sprite;
class MyTestBox {
public var _boxSprite:Sprite;
public var _angle:Number;
}
/**
* Base64化された画像データを表示可能な形式に変換するクラス
*
* 使い方 :
*
* var complete:Function = function( event:Event ):void {
* var display:DisplayObject = event.target.content as DisplayObject;
* if (display != null)
* addChild(display);
* };
*
* Base64ImageLoader.load(data, complete);
*
*/
class Base64ImageLoader
{
import flash.display.Loader;
import flash.events.Event;
import flash.utils.ByteArray;
import mx.utils.Base64Decoder;
static public function load( data:String, complete:Function = null ):Loader
{
var byteArray:ByteArray;
var base64Decoder:Base64Decoder;
var loader:Loader;
base64Decoder = new Base64Decoder();
base64Decoder.decode(data);
try {
byteArray = base64Decoder.toByteArray();
byteArray.position = 0;
} catch (e:Error) {
return null;
}
loader = new Loader();
if( complete != null )
loader.contentLoaderInfo.addEventListener( Event.COMPLETE, complete );
loader.loadBytes(byteArray);
return loader;
}
}