flash on 2012-3-1

by imo_
♥2 | Line 45 | Modified 2012-03-01 17:50:35 | MIT License
play

ActionScript3 source code

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

package {
    import flash.text.TextField;
    import flash.display.Sprite;
    import flash.display.*;
    import flash.geom.*;
    public class FlashTest extends Sprite {
        public function FlashTest() {
            var _target:Sprite = new Sprite();
            _target.graphics.beginFill(0);
            _target.graphics.drawRect(0, 0, 100, 100);
            _target.rotation = 30;
            
            var tx:Number = 2;
            var ty:Number = 2;
            var sx:Number = _target.scaleX;
            var sy:Number = _target.scaleY;
            
            var pt1:Point = _target.localToGlobal(new Point(50, 50));
            
            // でかくする
            _target.scaleX = tx;
            _target.scaleY = ty;
            var pt2:Point = _target.localToGlobal(new Point(50, 50));
            
            // もどす
            _target.scaleX = sx;
            _target.scaleY = sy;
            
            // ↓これがほしい
            var dx:Number = (pt1.x - pt2.x);
            var dy:Number = (pt1.y - pt2.y);
            var t:TextField=new TextField();
            t.text = "dx = " + dx + ", dy = " + dy;
            t.width = 465;
            addChild(t);
            
            // テスト
            
            calc(50, 50, 30, tx, ty);
        }
        
        private function calc(x:Number, y:Number, ang:Number, sx:Number, sy:Number):void {
            ang = ang * Math.PI / 180;
            var difx:Number = x * (1 - sx); // 先に差分を求めて、後で回転する
            var dify:Number = y * (1 - sy);
            var sin:Number = Math.sin(ang);
            var cos:Number = Math.cos(ang);
            var dx:Number = difx * cos - dify * sin; // Z軸回転
            var dy:Number = difx * sin + dify * cos;
            var t:TextField = new TextField();
            t.width = 465;
            t.y = 100;
            t.text = "dx = " + dx + ", dy = " + dy;
            addChild(t);
        }

    }
}