home *** CD-ROM | disk | FTP | other *** search
- package core.objects
- {
- import Box2D.Common.Math.b2Vec2;
- import caurina.transitions.Tweener;
- import core.events.CoreEvent;
- import flash.display.Sprite;
- import flash.geom.Point;
- import flash.media.Sound;
-
- public class BonusBall extends Ball
- {
-
- public static const POWERUP:String = "BonusPowerup";
-
- public static const ATTACH:String = "BonusAttach";
-
- public static const INVERSE:String = "BonusInverse";
-
- public static const ELASTIC:String = "Elasticity";
-
- public static const FREEZE:String = "BonusFreeze";
-
- public static const PUSH_FIELD:String = "BonusPushField";
-
-
- public var bonusDef:BonusDef;
-
- private var sndBonusPowerup:Sound;
-
- public function BonusBall(def:BonusDef)
- {
- bonusDef = def;
- super(def);
- }
-
- override protected function init() : void
- {
- super.init();
- initSounds();
- }
-
- protected function animComplete() : void
- {
- }
-
- public function bonusCollect() : void
- {
- isDead = true;
- dispatchEvent(new CoreEvent(CoreEvent.BONUS_COLLECT,this));
- var animSkin:Sprite = createSkin();
- animSkin.x = skin.x;
- animSkin.y = skin.y;
- var b2PlayerPos:b2Vec2 = engine.playerBall.getBody().GetPosition();
- var playerPos:Point = new Point(b2PlayerPos.x * engine.m_physScale,b2PlayerPos.y * engine.m_physScale);
- Tweener.addTween(animSkin,{
- "scaleX":1.5,
- "scaleY":1.5,
- "rotation":60,
- "time":0.3,
- "transition":"easeoutquad"
- });
- Tweener.addTween(animSkin,{
- "scaleX":0,
- "scaleY":0,
- "x":playerPos.x,
- "y":playerPos.y,
- "rotation":-180,
- "delay":0.4,
- "time":0.5,
- "transition":"easeoutquad",
- "onComplete":animComplete
- });
- }
-
- override protected function createSkin() : Sprite
- {
- var className:String = null;
- switch(bonusDef.type)
- {
- case BonusBall.FREEZE:
- className = "BonusFreezeAsset";
- break;
- case BonusBall.POWERUP:
- className = "BonusPowerupAsset";
- break;
- case BonusBall.PUSH_FIELD:
- className = "BonusPushFieldAsset";
- break;
- case BonusBall.ATTACH:
- className = "BonusAttachAsset";
- break;
- case BonusBall.ELASTIC:
- className = "BonusElasticAsset";
- break;
- case BonusBall.INVERSE:
- className = "BonusInverseAsset";
- }
- var SkinClass:Class = engine.assets.getAssetClass(className);
- var skin:Sprite = new SkinClass();
- skin.width = skin.height = ballDef.r * 2;
- engine.canvas.playerContainer.addChild(skin);
- return skin;
- }
-
- override protected function initSounds() : void
- {
- var BonusPowerupClass:Class = engine.assets.getAssetClass("SndPowerupBonus");
- sndBonusPowerup = new BonusPowerupClass();
- }
-
- protected function playSound() : void
- {
- engine.sndChannel = sndBonusPowerup.play(0,0,engine.sndTransform);
- }
- }
- }
-