Controller3D beta

by bradsedito
♥0 | Line 103 | Modified 2012-02-08 18:16:26 | 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/iR7y
 */






package 
{
    import flash.utils.ObjectInput;
    import flash.display.*;
    import flash.events.*;
    import flash.geom.*;
    import flash.text.*;
    import com.greensock.*;
    import com.greensock.easing.*;


    public class Main extends Sprite 
    {
        private const SW:Number=stage.stageHeight;
        private const SH:Number=stage.stageWidth;
        private const SD:Number=3000;
        public var pp:PerspectiveProjection;
        public var real:Sprite;
        public var mirror:Sprite;
        public var objects:Array = new Array();
        public var objects3D:Array = new Array();

        
        public function Main() 
        {
            pp=transform.perspectiveProjection;
            pp.projectionCenter = new Point(SW/2,SH/2);
            pp.fieldOfView=60;
            
            var bg:Shape = new Shape();
            bg.graphics.beginFill(0);
            bg.graphics.drawRect(0,0,SW,SH);
            bg.graphics.endFill();
            addChild(bg);
            
            objects.push(".");
            objects.push(".");
            objects.push(".");
            objects.push(".");

            var obj_01:Object3D = new Object3D( 100,62,Math.random()*SW,Math.random()*SH,Math.random()*SD );
            objects3D.push( obj_01 );

            mirror = new Sprite();
            addChild(mirror);
            mirror.x = SW/2;
            //mirror.y = SH/2+250;
            
            real = new Sprite();
            addChild(real);
            real.x = SW/2;
            real.y = SH/2;
            //real.y=SH/2-150;
            
            var textFormat:TextFormat = new TextFormat();
            textFormat.font = "Arial";
            textFormat.bold = true;
            textFormat.size = 24;
            textFormat.align = TextFormatAlign.CENTER;
            
            for (var i:int=0; i < objects.length; i++)  
            {
                // REAL
                var text:TextSprite = new TextSprite( objects[i],textFormat,0x0066ff );
                var _obj3d:Object3D = new Object3D( 100,62,Math.random()*SW-SW/2,Math.random()*SH-SH/2,Math.random()*SD-SD/2 );
                text.x = Math.random() * 600-300;
                text.y = Math.random() * 200-100;
                text.z = Math.random() * 600-300;
                //text.rotationX = Math.random()*360;
                //text.rotationY = Math.random()*360;
                //text.rotationZ = Math.random()*360;
                real.addChild( text   );
                real.addChild( _obj3d );
                // MIRROR 
                /*
                var mText:TextSprite = new TextSprite( objects[i],textFormat,0x000099 );
                mText.rotationX = -text.rotationX;
                mText.rotationY = text.rotationY;
                mText.rotationZ = -text.rotationZ;
                mText.scaleY = -1;
                mText.scaleZ = -1;
                mText.x = text.x;
                mText.y = -text.y;
                mText.z = text.z;
                mirror.addChild(mText);
                */
            }
            addEventListener(Event.ENTER_FRAME, xEyePoint);
        }
        
        public function xEyePoint(e:Event):void 
        {
            pp.projectionCenter=new Point( SW/2,SH/2 );
            //pp.projectionCenter=new Point(SW/2,mouseY);
            var eyePoint:Vector3D = new Vector3D(SW/2, SH/2, -pp.focalLength);
            //var eyePoint:Vector3D = new Vector3D(SW/2, mouseY, -pp.focalLength);
            TweenMax.to( real,1, {rotationX:(mouseY / SH * 480 - real.rotationX) * 0.1,rotationY:(mouseX / SW * 480 - real.rotationY) * 0.1, ease:Quad.easeOut});
            //real.rotationY += (mouseX / SW * 480 - real.rotationY) * 0.1;
            //mirror.rotationY = real.rotationY;
        }
        
    }
}



import flash.display.*;
import flash.text.*;
class Object3D extends Sprite 
{
    public function Object3D( objW:Number,objH:Number,objX:Number,objY:Number,objZ:Number ):void 
    {
        var _id:uint;
        var _shape:Shape  = new Shape();
        var canvas:Sprite = new Sprite();
        canvas.x = objX;
        canvas.y = objY;
        canvas.z = objZ;
        canvas.graphics.beginFill( 0xffffff,1 );
        canvas.graphics.drawRect( -objW/2,-objH/2,objW,objH );
        canvas.graphics.endFill();
        
        canvas.addChild( _shape );
        addChild( canvas );
    } 
}


import flash.display.*;
import flash.text.*;
class TextSprite extends Sprite {
    public function TextSprite( str:String,tf:TextFormat,nColor:int ):void {
        var text:Sprite = new Sprite();
        var field:TextField = new TextField();
        field.antiAliasType = AntiAliasType.ADVANCED;
        field.autoSize=TextFieldAutoSize.LEFT;
        field.defaultTextFormat = tf;
        field.text = str;
        field.textColor= nColor;
        field.x -= field.width/2;
        field.y -= field.height/2;
        text.addChild(field);
        addChild(text);
    } 
}