Matrix

by mikelito33bdx
...
@author masaoka
♥0 | Line 72 | Modified 2010-09-06 19:14:37 | MIT License
play

ActionScript3 source code

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

package {
    import flash.display.Sprite;
    import flash.events.*;
    import flash.events.TextEvent;
    import flash.text.TextField;
    import flash.geom.Matrix;
    
    import caurina.transitions.Tweener;
    
    /**
     * ...
     * @author masaoka
     */
    [SWF(frameRate="30", width="465", height="465")]
    public class Main extends Sprite {
        
        private var _rect:Sprite;
        private var _myMatrix:Matrix;
        public function Main():void {
            
            //四角形の描画
            _rect = new Sprite();
            _rect.graphics.beginFill(0xFF6600, 0.8);
            _rect.graphics.drawRect(0, 0, 150, 100);
            _rect.graphics.endFill();
            _rect.x = 50;
            _rect.y = 50;
            this.addChild(_rect);
            
            //matrix
            _myMatrix = _rect.transform.matrix;
            trace(_myMatrix);//(a=1, b=0, c=0, d=1, tx=50, ty=50)
            
            var btn1:Sprite = new Sprite();
            creatBtn(btn1, 350, 10, "translate");
            var btn2:Sprite = new Sprite();
            creatBtn(btn2, 350, 50, "scale");
            var btn3:Sprite = new Sprite();
            creatBtn(btn3, 350, 90, "rotate");
            var btnClear:Sprite = new Sprite();
            creatBtn(btnClear, 350, 400, "clear");
            
            btn1.addEventListener(MouseEvent.CLICK, click1);
            btn2.addEventListener(MouseEvent.CLICK, click2);
            btn3.addEventListener(MouseEvent.CLICK, click3);
            btnClear.addEventListener(MouseEvent.CLICK, clickClear);
        }
        
        //移動
        private function click1(evt:MouseEvent):void {
            _myMatrix.translate( -50, -50);
            _rect.transform.matrix = _myMatrix;
        }
        //拡大・縮小
        private function click2(evt:MouseEvent):void {
            _myMatrix.scale(1.5, 1.5);
            _rect.transform.matrix = _myMatrix;
        }
        //回転
        private function click3(evt:MouseEvent):void {
            _myMatrix.rotate(Math.PI / 3);
            _rect.transform.matrix = _myMatrix;
        }
        
        private function clickClear(evt:MouseEvent):void {
            _myMatrix.a = 1;
            _myMatrix.b = 0;
            _myMatrix.c = 0;
            _myMatrix.d = 1;
            _myMatrix.tx = 50;
            _myMatrix.ty = 50;
            
            _rect.transform.matrix = _myMatrix;
        }
        
        private function creatBtn(btn:Sprite,_x:Number, _y:Number,_text:String):Sprite {
            //var btn:Sprite = new Sprite();
            btn.graphics.beginFill(0x0FFFF0,0.5);
            btn.graphics.drawRoundRect(0, 0, 80, 30, 10);
            btn.graphics.endFill();
            btn.x = _x;
            btn.y = _y;
            this.addChild(btn);
            
            var tf:TextField = new TextField();
            tf.text = _text;
            tf.selectable = false;
            tf.x = 20;
            tf.y = 5;
            btn.addChildAt(tf,0);
            
            return btn;
        }
        
    }
    
}