Concept of Tween Proxy

by fladdict
♥0 | Line 43 | Modified 2009-09-11 16:40:26 | MIT License
play

ActionScript3 source code

/**
 * Copyright fladdict ( http://wonderfl.net/user/fladdict )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/t7wk
 */

package {
    import flash.display.Sprite;
    import caurina.transitions.*;
    import org.libspark.betweenas3.BetweenAS3;
    
    public class FlashTest extends Sprite {
        protected var wp:SpriteWrapper;
        public function FlashTest() {
            // write as3 code here..
            var sp:Sprite = new Sprite();
            sp.graphics.beginFill(0,1);
            sp.graphics.drawRect(-20,-20,40,40);
            sp.graphics.endFill();
            sp.x = 240;
            sp.y = 240;
            this.addChild(sp);
            
            //Normal Tween
            //Tweener.addTween(sp,{rotation:360, time:5});
            //Tweener.addTween(sp,{x:360, time:5});
            
            //Using Wrapper
            //Tweener.addTween(new SpriteWrapper(sp),{radian:6.28, time:5});
            //Tweener.addTween(new SpriteWrapper(sp),{scale:4, time:5});
            Tweener.addTween(new SpriteWrapper(sp),{x:360, time:5});
            
            //BetweenAS3.tween(new SpriteWrapper(sp),{x:40},null,5).play();
        }
    }
    
   
}

import flash.display.Sprite;
class SpriteWrapper{
    protected var target:Sprite;
    public function SpriteWrapper(target:Sprite){
        this.target = target;
    }
    
    /*
    ---------------------------------------------
    radian rotation
    ---------------------------------------------
    */
    public function set radian(val:Number):void{
        target.rotation = val*180/Math.PI;
    }
    public function get radian():Number{
        return target.rotation * Math.PI / 180;
    }
    
    /*
    ----------------------------------------------
    controll scaleX and scaleY at the same time
    ----------------------------------------------
    */
    public function set scale(val:Number):void{
        target.scaleX = target.scaleY = val;
    }
    
    public function get scale():Number{
        return target.scaleX;
    }
    
    /*
    ----------------------------------------------
    rounded x
    ----------------------------------------------
    */
    public function set x(val:Number):void{
        target.x = Math.round(val);
    }
    
    public function get x():Number{
        return target.x;
    }
}