Actionscript:
-
var circle:Shape = Shape(addChild(new Shape()));
-
with(circle.graphics) beginFill(0x00000), drawCircle(0,0,10);
-
-
var point:Point = new Point();
-
var trans:Matrix = new Matrix();
-
trans.rotate(Math.PI);
-
trans.scale(.5, .5);
-
trans.tx = stage.stageWidth / 2;
-
trans.ty = stage.stageHeight / 2;
-
-
addEventListener(Event.ENTER_FRAME, onLoop);
-
-
function onLoop(evt:Event):void {
-
point.x = mouseX - trans.tx;
-
point.y = mouseY - trans.ty;
-
-
point = trans.transformPoint(point);
-
-
circle.x = point.x;
-
circle.y = point.y;
-
}
If you don't feel like rolling your own transformations Matrix.transformPoint() is a very powerful method. It simply applies the tranformations of a given matrix to a Point. The above example scales rotates and translates a point which is then used to position a circle Shape.
Matrix.transformPoint() is well suited for creating orbiting behavior:
Actionscript:
-
var circle:Shape = Shape(addChild(new Shape()));
-
with(circle.graphics) beginFill(0x00000), drawCircle(0,0,10);
-
-
var point:Point = new Point(100,0);
-
var trans:Matrix = new Matrix();
-
trans.rotate(.1);
-
trans.scale(.99,.99);
-
-
addEventListener(Event.ENTER_FRAME, onLoop);
-
-
function onLoop(evt:Event):void {
-
-
point = trans.transformPoint(point);
-
-
circle.x = point.x + stage.stageWidth / 2;
-
circle.y = point.y + stage.stageHeight / 2;
-
}
This code will cause the circle Shape to move in a spiral formation.