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

  1. package core.objects
  2. {
  3.    import core.CoreEngine;
  4.    import core.events.CoreEvent;
  5.    import flash.display.Sprite;
  6.    import flash.events.EventDispatcher;
  7.    import flash.geom.ColorTransform;
  8.    
  9.    public class BounceParticle extends EventDispatcher
  10.    {
  11.        
  12.       
  13.       private var engine:CoreEngine;
  14.       
  15.       private var totalLifeTime:uint;
  16.       
  17.       private var gravity:Number;
  18.       
  19.       private var magnitude:Number;
  20.       
  21.       private var angle:Number;
  22.       
  23.       private var dx:Number;
  24.       
  25.       private var dy:Number;
  26.       
  27.       private var rot:Number;
  28.       
  29.       private var lifeTime:uint;
  30.       
  31.       private var x:Number;
  32.       
  33.       private var y:Number;
  34.       
  35.       private var skin:Sprite;
  36.       
  37.       public function BounceParticle(x:Number, y:Number)
  38.       {
  39.          super();
  40.          this.x = x;
  41.          this.y = y;
  42.          init();
  43.       }
  44.       
  45.       private function updateHandler(e:CoreEvent) : void
  46.       {
  47.          magnitude *= 0.95;
  48.          skin.rotation += rot;
  49.          skin.scaleX *= 0.98;
  50.          skin.scaleY *= 0.96;
  51.          var obj:Object = fly(angle,magnitude);
  52.          skin.x += obj.movx;
  53.          skin.y += obj.movy + gravity;
  54.          gravity += 0.3;
  55.          ++lifeTime;
  56.          if(lifeTime > totalLifeTime)
  57.          {
  58.             destroy();
  59.          }
  60.       }
  61.       
  62.       private function destroy(e:CoreEvent = null) : void
  63.       {
  64.          skin.parent.removeChild(skin);
  65.          engine.dispatcher.removeEventListener(CoreEvent.UPDATE,updateHandler);
  66.          engine.dispatcher.removeEventListener(CoreEvent.DESTROY,destroy);
  67.       }
  68.       
  69.       private function fly(ang1:Number, mag1:Number) : Object
  70.       {
  71.          return {
  72.             "movx":mag1 * Math.cos(ang1 * Math.PI / 180),
  73.             "movy":mag1 * Math.sin(ang1 * Math.PI / 180)
  74.          };
  75.       }
  76.       
  77.       private function createSkin() : Sprite
  78.       {
  79.          var SkinClass:Class = engine.assets.getAssetClass("CollideParticleAsset");
  80.          var skin:Sprite = new SkinClass();
  81.          engine.canvas.effectsContainer.addChild(skin);
  82.          return skin;
  83.       }
  84.       
  85.       private function init() : void
  86.       {
  87.          engine = CoreEngine.getInstance();
  88.          engine.dispatcher.addEventListener(CoreEvent.UPDATE,updateHandler);
  89.          engine.dispatcher.addEventListener(CoreEvent.DESTROY,destroy);
  90.          skin = createSkin();
  91.          skin.x = x;
  92.          skin.y = y;
  93.          var rbcol:Number = Math.ceil(Math.random() * 5 - 2.5);
  94.          var gbcol:Number = Math.ceil(Math.random() * 5 - 2.5);
  95.          var bbcol:Number = Math.ceil(Math.random() * 5 - 2.5);
  96.          var colorTransform:ColorTransform = new ColorTransform();
  97.          colorTransform.color = 16777215;
  98.          skin.transform.colorTransform = colorTransform;
  99.          dx = -2 + Math.random() * 4;
  100.          dy = -2 + Math.random() * 4;
  101.          angle = -30 + Math.random() * 60;
  102.          magnitude = -10 + Math.random() * 20;
  103.          rot = -45 + Math.random() * 90;
  104.          skin.rotation = Math.random() * 360;
  105.          skin.alpha = 0.6 + Math.random() * 0.35;
  106.          skin.scaleX = 1 + Math.random() * 1.7;
  107.          skin.scaleY = 1 + Math.random() * 1.7;
  108.          gravity = -2;
  109.          lifeTime = 0;
  110.          totalLifeTime = 40 + Math.round(Math.random() * 100);
  111.       }
  112.    }
  113. }
  114.