flash on 2012-3-1
♥2 |
Line 45 |
Modified 2012-03-01 17:50:35 |
MIT License
archived:2017-03-20 13:28:26
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);
}
}
}