home *** CD-ROM | disk | FTP | other *** search
- package core.objects
- {
- import Box2D.Collision.Shapes.b2PolygonDef;
- import Box2D.Collision.Shapes.b2ShapeDef;
- import Box2D.Common.Math.b2Vec2;
- import Box2D.Dynamics.b2Body;
- import Box2D.Dynamics.b2BodyDef;
- import caurina.transitions.Tweener;
- import core.events.CoreEvent;
- import flash.display.Sprite;
- import flash.geom.Point;
-
- public class Rect extends BaseObject
- {
-
-
- public var rectDef:RectDef;
-
- public function Rect(def:RectDef)
- {
- this.rectDef = def;
- super(def);
- }
-
- override protected function init() : void
- {
- super.init();
- updateSkin();
- engine.dispatcher.addEventListener(CoreEvent.UPDATE,updateHandler);
- }
-
- public function collidePlayer() : void
- {
- isDead = true;
- var animSkin:Sprite = createSkin();
- var b2pos:b2Vec2 = body.GetPosition();
- var pos:Point = new Point(b2pos.x * engine.m_physScale,b2pos.y * engine.m_physScale);
- var w:Number = skin.width;
- animSkin.x = pos.x;
- animSkin.y = pos.y;
- animSkin.width = rectDef.width;
- animSkin.height = rectDef.height;
- animSkin.rotation = rectDef.rotation + body.GetAngle() * 180 / Math.PI;
- Tweener.addTween(animSkin,{
- "scaleX":animSkin.scaleX * 3,
- "scaleY":animSkin.scaleY * 3,
- "alpha":0,
- "time":0.5,
- "transition":"easeoutquad",
- "onComplete":animComplete,
- "onCompleteParams":[animSkin]
- });
- }
-
- override protected function createBodyDef() : b2BodyDef
- {
- var bodyDef:b2BodyDef = new b2BodyDef();
- bodyDef.position.Set(rectDef.x / engine.m_physScale,rectDef.y / engine.m_physScale);
- bodyDef.isBullet = true;
- bodyDef.userData = this;
- return bodyDef;
- }
-
- protected function updateHandler(e:CoreEvent) : void
- {
- updateSkin();
- skin.rotation = rectDef.rotation + body.GetAngle() * 180 / Math.PI;
- var posY:Number = body.GetPosition().y * engine.m_physScale;
- if(posY > 480 + rectDef.width + rectDef.height)
- {
- isDead = true;
- }
- }
-
- override protected function createSkin() : Sprite
- {
- var SkinClass:Class = engine.assets.getAssetClass("RectAsset");
- var skin:Sprite = new SkinClass();
- skin.width = rectDef.width;
- skin.height = rectDef.height;
- engine.canvas.coinsContainer.addChild(skin);
- return skin;
- }
-
- private function animComplete(animSprite:Sprite) : void
- {
- animSprite.parent.removeChild(animSprite);
- }
-
- override protected function createBody(bodyDef:b2BodyDef, shapeDef:b2ShapeDef) : b2Body
- {
- var body:b2Body = engine.m_world.CreateBody(bodyDef);
- body.CreateShape(shapeDef);
- body.SetMassFromShapes();
- return body;
- }
-
- override protected function createShapeDef() : b2ShapeDef
- {
- var shapeDef:b2PolygonDef = null;
- shapeDef = new b2PolygonDef();
- var w2:Number = rectDef.width / engine.m_physScale / 2;
- var h2:Number = rectDef.height / engine.m_physScale / 2;
- shapeDef.SetAsOrientedBox(w2,h2,new b2Vec2(0,0),rectDef.rotation * Math.PI / 180);
- shapeDef.density = 1;
- shapeDef.friction = 0.5;
- shapeDef.restitution = 0.2;
- shapeDef.filter.categoryBits = 2;
- shapeDef.filter.maskBits = 65535 & ~2;
- return shapeDef;
- }
- }
- }
-