home *** CD-ROM | disk | FTP | other *** search
/ Computer Active 2010 August / CA08.iso / Multimedija / shufflr.air / ShufflrClient.swf / scripts / mx / effects / effectClasses / RotateInstance.as < prev    next >
Encoding:
Text File  |  2010-06-23  |  3.0 KB  |  95 lines

  1. package mx.effects.effectClasses
  2. {
  3.    import mx.core.mx_internal;
  4.    import mx.effects.EffectManager;
  5.    
  6.    use namespace mx_internal;
  7.    
  8.    public class RotateInstance extends TweenEffectInstance
  9.    {
  10.       mx_internal static const VERSION:String = "3.5.0.12683";
  11.       
  12.       public var originX:Number;
  13.       
  14.       public var originY:Number;
  15.       
  16.       private var centerX:Number;
  17.       
  18.       private var centerY:Number;
  19.       
  20.       public var angleTo:Number = 360;
  21.       
  22.       private var originalOffsetX:Number;
  23.       
  24.       private var originalOffsetY:Number;
  25.       
  26.       private var newX:Number;
  27.       
  28.       private var newY:Number;
  29.       
  30.       public var angleFrom:Number = 0;
  31.       
  32.       public function RotateInstance(param1:Object)
  33.       {
  34.          super(param1);
  35.       }
  36.       
  37.       override public function onTweenUpdate(param1:Object) : void
  38.       {
  39.          if(Math.abs(newX - target.x) > 0.1)
  40.          {
  41.             centerX = target.x + originalOffsetX;
  42.          }
  43.          if(Math.abs(newY - target.y) > 0.1)
  44.          {
  45.             centerY = target.y + originalOffsetY;
  46.          }
  47.          var _loc2_:Number = Number(param1);
  48.          var _loc3_:Number = Math.PI * _loc2_ / 180;
  49.          EffectManager.suspendEventHandling();
  50.          target.rotation = _loc2_;
  51.          newX = centerX - originX * Math.cos(_loc3_) + originY * Math.sin(_loc3_);
  52.          newY = centerY - originX * Math.sin(_loc3_) - originY * Math.cos(_loc3_);
  53.          newX = Number(newX.toFixed(1));
  54.          newY = Number(newY.toFixed(1));
  55.          target.move(newX,newY);
  56.          EffectManager.resumeEventHandling();
  57.       }
  58.       
  59.       override public function play() : void
  60.       {
  61.          super.play();
  62.          var _loc1_:Number = Math.PI * target.rotation / 180;
  63.          if(isNaN(originX))
  64.          {
  65.             originX = target.width / 2;
  66.          }
  67.          if(isNaN(originY))
  68.          {
  69.             originY = target.height / 2;
  70.          }
  71.          centerX = target.x + originX * Math.cos(_loc1_) - originY * Math.sin(_loc1_);
  72.          centerY = target.y + originX * Math.sin(_loc1_) + originY * Math.cos(_loc1_);
  73.          if(isNaN(angleFrom))
  74.          {
  75.             angleFrom = target.rotation;
  76.          }
  77.          if(isNaN(angleTo))
  78.          {
  79.             angleTo = target.rotation == 0 ? (angleFrom > 180 ? 360 : 0) : Number(target.rotation);
  80.          }
  81.          tween = createTween(this,angleFrom,angleTo,duration);
  82.          target.rotation = angleFrom;
  83.          _loc1_ = Math.PI * angleFrom / 180;
  84.          EffectManager.suspendEventHandling();
  85.          originalOffsetX = originX * Math.cos(_loc1_) - originY * Math.sin(_loc1_);
  86.          originalOffsetY = originX * Math.sin(_loc1_) + originY * Math.cos(_loc1_);
  87.          newX = Number((centerX - originalOffsetX).toFixed(1));
  88.          newY = Number((centerY - originalOffsetY).toFixed(1));
  89.          target.move(newX,newY);
  90.          EffectManager.resumeEventHandling();
  91.       }
  92.    }
  93. }
  94.  
  95.