rotate around point
♥0 |
Line 85 |
Modified 2015-10-02 01:11:12 |
MIT License
archived:2017-03-20 08:35:47
ActionScript3 source code
/**
* Copyright PXshadow ( http://wonderfl.net/user/PXshadow )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/uyiX
*/
// forked from jmhawk904's forked from: startProject
// forked from PXshadow's startProject
package {
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.text.TextFieldAutoSize;
import flash.text.TextField;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.events.MouseEvent;
import flash.geom.*;
public class FlashTest extends Sprite {
public function FlashTest() {
// write as3 code here..
//vars
var player:MovieClip = new MovieClip();
var playerSize:Number = 20;
var upPressed:Boolean = false;
var downPressed:Boolean = false;
var leftPressed:Boolean = false;
var rightPressed:Boolean = false;
var keyPressed:String = "";
var point:Point = new Point(50,50);
var m:Matrix = player.transform.matrix;
var devText:TextField = new TextField();
//create player
player.graphics.lineStyle(0x000000);
player.graphics.beginFill(0xFFFFFF);
player.graphics.drawRect(0,0,stage.stageWidth/playerSize,stage.stageHeight/playerSize);
player.graphics.endFill();
//creat tiles
//add to stage
addChild(player);
addChild(devText);
function rotateAroundExternalPoint(orbitObject:MovieClip, m:Matrix, x:Number, y:Number, angleDegrees:Number):void
{
var point:Point = new Point(x, y);
// get the position of the MovieClip related to its origin and the point around which it needs to be rotated
point = m.transformPoint(point);
// set it
m.translate( -point.x, -point.y);
// rotate it of 30°
m.rotate(30 * (Math.PI / 180));
// and get back to its “normal” position
m.translate(point.x, point.y);
// finally, to set the MovieClip position, use this
orbitObject.transform.matrix = m;
}
//update
addEventListener(Event.ENTER_FRAME, function(_:Event):void {
stage.addEventListener(KeyboardEvent.KEY_DOWN, function(event:KeyboardEvent):void {
devText.text = String(event.keyCode);
if (event.keyCode == 87) {
//up
upPressed = true;
keyPressed = "up";
}
if (event.keyCode == 83) {
//down
downPressed = true;
keyPressed = "down";
}
if (event.keyCode == 65) {
//left
leftPressed = true;
}
if (event.keyCode == 68) {
//right
rightPressed = true;
}
});
stage.addEventListener(KeyboardEvent.KEY_UP, function(event:KeyboardEvent):void {
if (event.keyCode == 87) {
//up
upPressed = false;
}
if (event.keyCode == 83) {
//down
downPressed = false;
}
if (event.keyCode == 65) {
//left
leftPressed = false;
}
if (event.keyCode == 68) {
//right
rightPressed = false;
}
});
//update
if(leftPressed == true){
rotateAroundExternalPoint(m, stage.mouseX, stage.mouseY, 10)
}
if(rightPressed == true){
player.x += 3;
player.rotateAroundExternalPoint(m,stage.stage.stageWidth/2,stage.stageHeight/2,50)
}
if(upPressed == true){
player.y += -3;
}
if(downPressed == true){
player.y += 3;
}
});
}
}
}