Resize to Box

by rfkrocktk
Resize any display object, maintaining aspect ratio, to fit within a box. 
♥0 | Line 45 | Modified 2010-09-22 01:34:32 | GPLv3 License
play

ActionScript3 source code

/**
 * Copyright rfkrocktk ( http://wonderfl.net/user/rfkrocktk )
 * GNU General Public License, v3 ( http://www.gnu.org/licenses/quick-guide-gplv3.html )
 * Downloaded from: http://wonderfl.net/c/zeEK
 */

package {
    import caurina.transitions.Tweener;
    import flash.display.Sprite;   
    
    public class ResizeToBoxTest extends Sprite {
        
        private var measure:Sprite;
        
        private var target:Sprite;
        
        public function ResizeToBoxTest() {
            this.target = new Sprite();
            this.target.graphics.beginFill(0xFFFF77, 0.5);
            this.target.graphics.drawRect(0, 0, 300, 400);
            this.target.graphics.endFill();
            
            this.target.x = this.target.y = 25;
            
            this.addChild(this.target);
            
            
        }
    }
}

import flash.display.DisplayObject;
import flash.geom.Rectangle;

class Resize {
    
    public function Resize() {
        
    }
    
    public function fit(displayObject:DisplayObject, rectangle:Rectangle, 
            useScale:Boolean = false):void {
        if (useScale) {
            fitUsingScale(displayObject, rectangle);
        } else {
            fitUsingWidthAndHeight(displayObject, rectangle);
        }
    }
    
    public function fitUsingWidthAndHeight(displayObject:DisplayObject,
            rectangle:Rectangle):void {    
        
    }
    
    public function fitUsingScale(displayObject:DisplayObject, 
            rectangle:Rectangle):void {
        var scaleX:Number = rectangle.width / displayObject.width;
        var scaleY:Number = rectangle.height / displayObject.height;
        var scale:Number = NaN;
        
        if (scaleX > scaleY) {
            scale = scaleY;
        } else {
            scale = scaleX;
        }
        
        displayObject.scaleX = displayObject.scaleY = scale;
    }
}