Rotation
♥0 |
Line 53 |
Modified 2011-03-29 11:18:37 |
MIT License
archived:2017-03-20 17:40:49
ActionScript3 source code
/**
* Copyright quail24eggs ( http://wonderfl.net/user/quail24eggs )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/yx7d
*/
//なんで中心がズレてくんだろ?
package {
import flash.display.Sprite;
import flash.geom.Matrix;
import flash.geom.Point;
import flash.events.Event;
public class Main extends Sprite {
public function Main():void {
// 以下 四角形描写
var sq1:Sprite = new Sprite();
sq1.graphics.beginFill(0xFFFFFF* Math.random());
sq1.x = 100;
sq1.y = 100;
sq1.alpha = 0.3;
sq1.graphics.drawRect(0,0,100,100);
this.addChild(sq1);
var sq2:Sprite = new Sprite();
sq2.graphics.beginFill(0xFFFFFF* Math.random());
sq2.x =110;
sq2.y = 110;
sq2.alpha = 0.3;
sq2.graphics.drawRect(0,0,85,85);
this.addChild(sq2);
var cPoint:Point = new Point(sq1.width/2, sq1.height/2);
//sq1左上~sq1中心
var tPoint:Point = cPoint.add(new Point(sq1.x, sq1.y));
//画面左上(原点)~sq1中心
var cPoint2:Point = new Point(sq2.width/2, sq2.height/2);
var tPoint2:Point = cPoint2.add(new Point(sq2.x, sq2.y));
var dec:Number = 0.2;
//減速
addEventListener(Event.ENTER_FRAME, xRotate);
addEventListener(Event.ENTER_FRAME, xRotate2);
function xRotate(eventObject:Event):void{
var mousePoint:Point = new Point(sq1.mouseX, sq1.mouseY);
//sq1左上~マウス座標
var myPoint:Point = mousePoint.subtract(cPoint);
//sq1中心~マウス座標
var nRadian:Number = Math.atan2(myPoint.y, myPoint.x);
//sq1中心に対するマウスの角度(ラジアン)
var myMatrix:Matrix = sq1.transform.matrix;
myMatrix.translate( -tPoint.x, -tPoint.y);
//sq1中心座標⇒原点
myMatrix.rotate(nRadian * dec);
//原点で回転
myMatrix.translate(tPoint.x, tPoint.y);
trace(tPoint.x);
trace(tPoint.y);
//原点⇒sq1中心座標
sq1.transform.matrix = myMatrix;
//回転実行
}
function xRotate2(eventObject:Event):void{
var mousePoint2:Point = new Point(sq2.mouseX, sq2.mouseY);
var myPoint2:Point = mousePoint2.subtract(cPoint2);
var nRadian2:Number = Math.atan2(myPoint2.y, myPoint2.x)+Math.PI/4;
var myMatrix2:Matrix = sq2.transform.matrix;
myMatrix2.translate( -tPoint2.x, -tPoint2.y);
myMatrix2.rotate(nRadian2 * dec/2);
myMatrix2.translate(tPoint2.x, tPoint2.y);
sq2.transform.matrix = myMatrix2;
}
}
}
}