globalToLocal3D

by bradsedito forked from globalToLocal3D test (diff: 68)
♥1 | Line 66 | Modified 2011-11-09 07:11:44 | MIT License
play

ActionScript3 source code

/**
 * Copyright bradsedito ( http://wonderfl.net/user/bradsedito )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/jNEb
 */






package 
{
    import flash.events.Event;
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import flash.geom.*;

    
    public class FlashTest extends Sprite 
    {
        
        public  var SW:Number = new Number( stage.stageWidth  );
        public  var SH:Number = new Number( stage.stageHeight );
        public  var SD:Number = new Number( 1000              );
        private var rectSp:Rect;
        private var absZero2D:Point;
        private var absZero3D:Vector3D;
        
 
        public function FlashTest() 
        {
            absZero2D = new Point( 0,0 );  
            absZero3D = new Vector3D( absZero2D.x,absZero2D.y,(SD/2)+0 ); 
          //absZero3D = new Vector3D( stage.globalToLocal3D(absZero2D).x,stage.globalToLocal3D(absZero2D).y,0 ); 
            rectSp    = new Rect();            
            rectSp.x  = SW - absZero3D.x - rectSp.width;   // (stage.stageWidth  /2);// - (rectSp.width  /2);  // (stage.stageWidth/2)  + (rectSp.width /2);
            rectSp.x  =  rectSp.x - (SW/2);
            rectSp.y  = SH - absZero3D.y - rectSp.height;  // (stage.stageHeight /2);// - (rectSp.height /2); // (stage.stageHeight/2) + (rectSp.height/2);
            rectSp.y  =  rectSp.y - (SH/2);
            rectSp.z  = 0;
            
            this.addChild(rectSp);            
            //rectSp.rotationY = 45; 
            //rectSp.rotationX = 35;
            
            stage.addEventListener( Event.ENTER_FRAME,loop ); 
            function loop( event:Event ):void
            {
                this.rotationY = rotationY++;    
            }
             
            stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
            
        }
        
        private function mouseDownHandler(e:MouseEvent):void
        {
                var p:Point = new Point(stage.mouseX, stage.mouseY);
                var pos3d:Vector3D = rectSp.globalToLocal3D(p);
                
                var dot:Dot = new Dot();

                pos3d = Sprite(rectSp).transform.matrix3D.transformVector(pos3d);
                
                dot.x = pos3d.x;
                dot.y = pos3d.y;
                dot.z = pos3d.z;
                
                this.addChild(dot);
                
        }
    }
}

import flash.display.Sprite;
import flash.display.Graphics;
internal class Dot extends Sprite
{
    public function Dot(color:int = 0xff0000, size:Number = 20){
        var g:Graphics = this.graphics;
        g.beginFill(color);
        g.drawCircle(0,0,size);
        g.endFill();
    }
}
internal class Rect extends Sprite
{
    public function Rect(){
        var g:Graphics = this.graphics;
        var size:Number = 200;
        g.beginFill(0x00ff00);
        g.drawRect(-size/2,-size/2,size, size);
        g.endFill();
    }
}