home *** CD-ROM | disk | FTP | other *** search
/ 404 Jogos / CLJG.iso / Diversos / Beez.swf / scripts / core / objects / Star.as < prev    next >
Encoding:
Text File  |  2008-09-03  |  6.4 KB  |  201 lines

  1. package core.objects
  2. {
  3.    import Box2D.Collision.Shapes.b2CircleDef;
  4.    import Box2D.Collision.Shapes.b2ShapeDef;
  5.    import Box2D.Common.Math.b2Vec2;
  6.    import Box2D.Dynamics.b2BodyDef;
  7.    import caurina.transitions.Tweener;
  8.    import core.events.CoreEvent;
  9.    import flash.display.Sprite;
  10.    import flash.geom.Point;
  11.    import flash.media.Sound;
  12.    import flash.text.TextField;
  13.    
  14.    public class Star extends Ball
  15.    {
  16.       
  17.       private static var LIFE_TIME:uint = 40 * 10;
  18.        
  19.       
  20.       private var skinInner:Sprite;
  21.       
  22.       public var score:uint;
  23.       
  24.       private var lifeTime:uint;
  25.       
  26.       private var sndStarCollect:Sound;
  27.       
  28.       private var skinScore:Sprite;
  29.       
  30.       private var skinScore_tf:TextField;
  31.       
  32.       public function Star(def:StarDef)
  33.       {
  34.          super(def);
  35.       }
  36.       
  37.       override protected function updateHandler(e:CoreEvent) : void
  38.       {
  39.          if(lifeTime > LIFE_TIME)
  40.          {
  41.             lifeEnd();
  42.          }
  43.          ++lifeTime;
  44.       }
  45.       
  46.       public function collidePlayer() : void
  47.       {
  48.          isDead = true;
  49.          score = ballDef.r * 2;
  50.          dispatchEvent(new CoreEvent(CoreEvent.STAR_COLLECT,this));
  51.          var animSkin:Sprite = createSkin();
  52.          skinInner = animSkin.getChildByName("inner") as Sprite;
  53.          skinScore = animSkin.getChildByName("score") as Sprite;
  54.          skinScore_tf = skinScore.getChildByName("score_tf") as TextField;
  55.          var b2pos:b2Vec2 = body.GetPosition();
  56.          var pos:Point = new Point(b2pos.x * engine.m_physScale,b2pos.y * engine.m_physScale);
  57.          animSkin.x = pos.x;
  58.          animSkin.y = pos.y;
  59.          skinInner.width = ballDef.r * 2;
  60.          skinInner.height = ballDef.r * 2;
  61.          skinInner.rotation = body.GetAngle() * 180 / Math.PI;
  62.          Tweener.addTween(skinInner,{
  63.             "scaleX":skinInner.scaleX * 5,
  64.             "scaleY":skinInner.scaleY * 5,
  65.             "alpha":0,
  66.             "time":1,
  67.             "transition":"easeoutquad"
  68.          });
  69.          skinScore.visible = true;
  70.          skinScore_tf.text = score.toString();
  71.          skinScore.alpha = 0;
  72.          Tweener.addTween(skinScore,{
  73.             "y":-50,
  74.             "time":1.5,
  75.             "transition":"linear",
  76.             "onComplete":animComplete,
  77.             "onCompleteParams":[animSkin]
  78.          });
  79.          Tweener.addTween(skinScore,{
  80.             "scaleX":5,
  81.             "scaleY":5,
  82.             "alpha":1,
  83.             "time":0.5,
  84.             "transition":"linear"
  85.          });
  86.          Tweener.addTween(skinScore,{
  87.             "scaleX":1,
  88.             "scaleY":1,
  89.             "alpha":0,
  90.             "time":0.5,
  91.             "delay":1,
  92.             "transition":"linear"
  93.          });
  94.          engine.sndChannel = sndStarCollect.play(0,0,engine.sndTransform);
  95.       }
  96.       
  97.       override protected function createShapeDef() : b2ShapeDef
  98.       {
  99.          var shapeDef:b2CircleDef = new b2CircleDef();
  100.          shapeDef.radius = ballDef.r / engine.m_physScale;
  101.          shapeDef.density = 0;
  102.          shapeDef.filter.categoryBits = 8;
  103.          shapeDef.filter.maskBits = 4;
  104.          return shapeDef;
  105.       }
  106.       
  107.       override protected function createSkin() : Sprite
  108.       {
  109.          var SkinClass:Class = engine.assets.getAssetClass("StarAsset");
  110.          var skin:Sprite = new SkinClass();
  111.          skin.width = skin.height = ballDef.r * 2;
  112.          engine.canvas.playerContainer.addChild(skin);
  113.          return skin;
  114.       }
  115.       
  116.       override protected function createBodyDef() : b2BodyDef
  117.       {
  118.          var bodyDef:b2BodyDef = new b2BodyDef();
  119.          bodyDef.position.Set(ballDef.x / engine.m_physScale,ballDef.y / engine.m_physScale);
  120.          bodyDef.userData = this;
  121.          return bodyDef;
  122.       }
  123.       
  124.       override protected function init() : void
  125.       {
  126.          super.init();
  127.          lifeTime = 0;
  128.          skinInner = skin.getChildByName("inner") as Sprite;
  129.          skinScore = skin.getChildByName("score") as Sprite;
  130.          skinScore_tf = skinScore.getChildByName("score_tf") as TextField;
  131.          skinScore.visible = false;
  132.          var scale:Number = ballDef.r * 2 / 60;
  133.          skinInner.scaleX = skinInner.scaleY = 0;
  134.          skinInner.rotation = 0;
  135.          Tweener.addTween(skinInner,{
  136.             "scaleX":scale,
  137.             "scaleY":scale,
  138.             "time":0.8,
  139.             "transition":"easeinquad"
  140.          });
  141.          Tweener.addTween(skinInner,{
  142.             "rotation":180,
  143.             "time":0.4,
  144.             "transition":"linear"
  145.          });
  146.          Tweener.addTween(skinInner,{
  147.             "rotation":360,
  148.             "time":0.4,
  149.             "delay":0.4,
  150.             "transition":"linear"
  151.          });
  152.       }
  153.       
  154.       private function animComplete(animSprite:Sprite) : void
  155.       {
  156.          animSprite.parent.removeChild(animSprite);
  157.       }
  158.       
  159.       override protected function initSounds() : void
  160.       {
  161.          var StarCollectClass:Class = engine.assets.getAssetClass("SndStarCollect");
  162.          sndStarCollect = new StarCollectClass();
  163.       }
  164.       
  165.       private function lifeEnd() : void
  166.       {
  167.          isDead = true;
  168.          dispatchEvent(new CoreEvent(CoreEvent.STAR_LIFE_END,this));
  169.          var animSkin:Sprite = createSkin();
  170.          skinInner = animSkin.getChildByName("inner") as Sprite;
  171.          skinScore = animSkin.getChildByName("score") as Sprite;
  172.          skinScore_tf = skinScore.getChildByName("score_tf") as TextField;
  173.          skinScore.visible = false;
  174.          var b2pos:b2Vec2 = body.GetPosition();
  175.          var pos:Point = new Point(b2pos.x * engine.m_physScale,b2pos.y * engine.m_physScale);
  176.          animSkin.x = pos.x;
  177.          animSkin.y = pos.y;
  178.          skinInner.width = ballDef.r * 2;
  179.          skinInner.height = ballDef.r * 2;
  180.          var scale:Number = ballDef.r * 2 / skinInner.width;
  181.          Tweener.addTween(skinInner,{
  182.             "scaleX":0,
  183.             "scaleY":0,
  184.             "time":0.8,
  185.             "transition":"easeinback"
  186.          });
  187.          Tweener.addTween(skinInner,{
  188.             "rotation":180,
  189.             "time":0.4,
  190.             "transition":"linear"
  191.          });
  192.          Tweener.addTween(skinInner,{
  193.             "rotation":360,
  194.             "time":0.4,
  195.             "delay":0.4,
  196.             "transition":"linear"
  197.          });
  198.       }
  199.    }
  200. }
  201.