/**
* Copyright yama3 ( http://wonderfl.net/user/yama3 )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/hkph
*/
package {
import Box2D.Collision.b2AABB;
import Box2D.Common.Math.b2Vec2;
import com.actionsnippet.qbox.QuickBox2D;
import com.actionsnippet.qbox.QuickObject;
import flash.display.DisplayObject;
import flash.display.DisplayObjectContainer;
import flash.display.Graphics;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
public class FlashTest extends Sprite {
private var _box2d:QuickBox2D;
private var mc:MovieClip;
private var bodyGroup:QuickObject;
public function FlashTest(arg:*, parent:DisplayObjectContainer) {
parent.addChild(this);
_box2d = new QuickBox2D(addChild(new MovieClip()) as MovieClip);
_box2d.mouseDrag();
createWalls();
}
private function loop(event:Event = null):void
{
mc.x = bodyGroup.x * 30;
mc.y = bodyGroup.y * 30;
mc.rotation = bodyGroup.angle * (180 / Math.PI);
}
public function start(arg:*):void {
_box2d.start();
addEventListener(Event.ENTER_FRAME, loop);
createDroid(2, 2, 1);
}
private function createWalls():void
{
var sw:Number = _box2d.main.stage.stageWidth / 30;
var sh:Number = _box2d.main.stage.stageHeight / 30;
_box2d.addBox({x:sw/2, y:-0.5, width:sw, height:1, lineAlpha:0, fillAlpha:0, density:0.0});
_box2d.addBox({x:sw/2, y:sh+0.5, width:sw, height:1, lineAlpha:0, density:0.0});
_box2d.addBox({x:-0.5, y:sh/2, width:1, height:sh, lineAlpha:0, fillAlpha:0, density:0.0});
_box2d.addBox({x:sw+0.5, y:sh/2, width:1, height:sh, lineAlpha:0, fillAlpha:0, density:0.0});
}
private function createDroid(x:Number, y:Number, scale:Number = 1, color:uint = 0xA4CA39):void
{
_box2d.setDefault({fillColor:color, lineAlpha:0, fillAlpha:1});
mc = new MovieClip();
var g:Graphics = mc.graphics;
g.beginFill(color);
g.drawRoundRect(0, 60, 120 * scale, 120 * scale, 15, 15);
g.beginFill(0xFFFFFF);
g.drawRect(0, 62, 120 * scale, 5 * scale);
g.drawCircle(32 * scale, 32 * scale, 4 * scale);
g.drawCircle(88 * scale, 32 * scale, 4 * scale);
addChild(mc);
var head:QuickObject = _box2d.addCircle(
{x:x, y:y, radius:2*scale}
);
var earLeft:QuickObject = _box2d.addBox(
{x:x-1.2*scale,y:y-1.8*scale,width:1*scale,height:0.2*scale,angle:1}
);
var earRight:QuickObject = _box2d.addBox (
{x:x-1.2*scale, y:y-1.8*scale,width:1*scale,height:0.2*scale,angle:-1}
);
var bodyBox:QuickObject = _box2d.addBox (
{x:x, y:y+1.8*scale,width:4*scale,height:4*scale,fillAlpha:0}
);
var bodyGroup = _box2d.addGroup(
{objects:[head, bodyBox, earLeft, earRight]}
);
var circleParamsA:Object = {
x:x-0.5*scale,
y:y-1.0*scale,
radius:0.5*scale
}
var circleParamB:Object = {
x:x-0.5*scale,
y:y+1.0*scale,
radius:0.5*scale
}
var armLeft:QuickObject = _box2d.addBox(
{x:x-0.5*scale,y:y*scale,height:2.2*scale}
);
var armLeftCircleA:QuickObject = _box2d.addCircle(circleParamsA);
var armLeftCircleB:QuickObject = _box2d.addCircle(circleParamsB);
var armLeftGroup:QuickObject = _box2d.addGroup({x:0.8 * scale, y:4.2 * scale, objects:[armLeftCircleA, armLeft, armLeftCircleB]};
_box2d.addJoint({
type:QuickBox2D.DISTANCE,
a:armLeftGroup.body,
b:bodyGroup.body,
})
}
}
}