rotate around point

by PXshadow
♥0 | Line 85 | Modified 2015-10-02 01:11:12 | MIT License
play

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;
            }

            
            
            

            
            });
            
        }
    }
}