forked from: 3dpv_basicTraining

by ushisantoasobu forked from 3dpv_basicTraining (diff: 2)
♥0 | Line 121 | Modified 2010-10-26 18:10:38 | MIT License
play

ActionScript3 source code

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

// forked from ushisantoasobu's 3dpv_basicTraining
package {
    import flash.media.Sound;

    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import flash.events.Event;
    
    import org.papervision3d.materials.*;
    import org.papervision3d.materials.utils.*;
    import org.papervision3d.objects.primitives.*;
    import org.papervision3d.objects.DisplayObject3D;
    import org.papervision3d.view.*;
    import org.papervision3d.view.layer.ViewportLayer;
    import org.papervision3d.scenes.Scene3D;
    import org.papervision3d.render.*;
    import org.papervision3d.cameras.*;
    
    import caurina.transitions.Tweener;
    
    [SWF(backgroundColor=0x000000)]
    
        public class FlashTest extends Sprite {
        
        public var scene:Scene3D;
        public var building:Cube;
        public var ground:Cube;
        public var viewport:Viewport3D;
        public var renderer:BasicRenderEngine;
        public var camera:Camera3D;
        
        public var _btn:btn;
        public var camera_pos:int = 0;
        
        public function FlashTest() {            
            
            scene = new Scene3D();
            
            camera = new Camera3D();
            camera.x = 400;
            camera.y = 180;
            camera.z = -1000;
            camera.focus = 100;
            camera.zoom = 10;
            
            viewport = new Viewport3D(465, 465);
            
            this.addChild(viewport);
            
            renderer = new BasicRenderEngine();
            
            /*----*/
            for(var i:int = 0; i < 1; i++){ 
                var material:ColorMaterial = new ColorMaterial(0x00FF00, 0.5);
                var materialList:MaterialsList = new MaterialsList();
                materialList.addMaterial(material, "front");
                materialList.addMaterial(material, "back");
                materialList.addMaterial(material, "right");
                materialList.addMaterial(material, "left");
                materialList.addMaterial(material, "top");
                materialList.addMaterial(material, "buttom");
            
                building = new Cube(materialList, 100, 100, 200, 10, 10, 10);
                
                building.x = i/6 * 200;
                building.z = i%6 * 200;
            
                scene.addChild(building);
                
            }
            /*----*/
            
            var material:ColorMaterial = new ColorMaterial(0x333333, 0.8);
            var materialList:MaterialsList = new MaterialsList();
            materialList.addMaterial(material, "front");
            materialList.addMaterial(material, "back");
            materialList.addMaterial(material, "right");
            materialList.addMaterial(material, "left");
            materialList.addMaterial(material, "top");
            materialList.addMaterial(material, "buttom");
            
            ground = new Cube(materialList, 5000, 5000, 10, 100, 100, 10);
                
            ground.x = -1000;
            ground.z = -1000;
            ground.y = 0;
            
            ground.addChild(building);
            
            /*----*/
            
            stage.addEventListener(Event.ENTER_FRAME, drawPapervision3d);
            
            aaa();
            
            _btn = new btn();
            _btn.addEventListener(MouseEvent.CLICK, btnEventHandler);
            
            addChild(_btn);
            
        }
        
        private function drawPapervision3d(e:Event):void{
            
            //plane.rotationY += 5;

            renderer.renderScene(scene, camera, viewport);
            
        }
        
        private function aaa():void{
            
            //var _viewportlayer:ViewportLayer = viewport.getChildLayer(plane);
            
            //_viewportlayer.buttonMode = true;
            
            //_viewportlayer.addEventListener(MouseEvent.CLICK, mouseEventHandler);         
            
        }
        
        private function mouseEventHandler(e:MouseEvent):void{
            //Tweener.addTween(plane, {time:1.0, rotationY:+360, scaleX:1.5, scaleY:1.5, transition:"easeInOutQuart"});
            //Tweener.addTween(plane, {time:0.0, delay:1.0, rotationY:0});
        }
        
        private function btnEventHandler(e:MouseEvent):void{
            if(camera_pos == 0){
                camera.x = 600;
                camera.y = 1200;
                camera.z = -1200;
                camera.rotationX = 45;
                camera.rotationY = 0;
                camera.rotationZ = 0;
                camera.focus = 100;
                camera.zoom = 10;
                }
            else if(camera_pos == 1){
                camera.x = 0;
                camera.y = 0;
                camera.z = -1000;
                camera.rotationX = 0;
                camera.rotationY = 0;
                camera.rotationZ = 0;
                camera.focus = 100;
                camera.zoom = 10;
                }
            else{
                camera.x = 2400;
                camera.y = 0;
                camera.z = -200;
                camera.rotationX = 0;
                camera.rotationY = -45;
                camera.rotationZ = 0;
                camera.focus = 100;
                camera.zoom = 20;
                }

            camera_pos ++;
            if(camera_pos > 2){camera_pos = 0;}
        }

    
    }
}
import flash.display.Sprite;

class btn extends Sprite{
    public function btn(){
        this.graphics.beginFill(0x666666);
        this.graphics.drawRect(20, 20, 40, 40);
        this.graphics.endFill();
        this.buttonMode = true;
    }

}