[練習]

by Tamanegi_kenshi
♥0 | Line 64 | Modified 2010-08-31 22:11:05 | MIT License
play

ActionScript3 source code

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

package {
    import flash.display.AVM1Movie;
    import flash.media.Camera;
    import flash.text.TextField;
    import flash.display.MovieClip;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.display.DisplayObject;
    import org.papervision3d.cameras.Camera3D;
    import org.papervision3d.scenes.Scene3D;
    import org.papervision3d.view.Viewport3D;
    import org.papervision3d.render.BasicRenderEngine;
    import org.papervision3d.objects.primitives.*;
    import org.papervision3d.materials.ColorMaterial;
    import org.papervision3d.events.InteractiveScene3DEvent;
    
    
    import caurina.transitions.Tweener;
    
    public class FlashTest extends Sprite {
        private var mc:MovieClip;
        private var camera:Camera3D;
        private var scene:Scene3D;
        private var viewport:Viewport3D;
        private var renderer:BasicRenderEngine;
        private var plane:Sphere;
        private var plane1:Sphere;
        
        private var planeNum:int = 20;
        private var planeArr:Array = [];
        private var angleX:int = 0;
        
        
        public function FlashTest() {
            init();
            
        }//FlashTest
        private function init():void{
            camera = new Camera3D();
            scene = new Scene3D();
            viewport = new Viewport3D(465, 465);
            renderer = new BasicRenderEngine();
            
            viewport.interactive = true;
            addChild(viewport);
            
           
            for(var i:int =0; i < planeNum; i++){
            var material:ColorMaterial = new ColorMaterial(0xcccccc);
            material.doubleSided = true;
            material.interactive = true;
            plane = new Sphere(material, 6, 2, 2);
            plane.y = -planeNum / 2 * 5 + i * 5;
            var radian:Number = 360 / planeNum * i * Math.PI / 180;
            plane.x = Math.cos(radian) * 30;
            plane.z = Math.sin(radian) * 30;
            
            scene.addChild(plane);
           // planeArr.push(plane);
           // planeArr[i].addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, onPlane);
            }
           
            
            addEventListener(Event.ENTER_FRAME, onEnter);            
        
        }
     //   private function onPlane(e:InteractiveScene3DEvent):void{
          //event.target.scaleX = 2;
     //   }


       
       
        private function onEnter(e:Event):void{
            
            angleX += (232 - mouseX) * 0.05;
            var radian:Number = angleX * Math.PI / 180;
            camera.x = Math.cos(radian) * 500;
            camera.z = Math.sin(radian) * 500;
            
            var dz:Number = 0 - camera.z;
            var dx:Number = 0 - camera.x;
            var angl:Number = Math.atan2(dx, dz);
            camera.rotationY = angl * 180 / Math.PI;
            
            
            renderer.renderScene(scene, camera, viewport);
        }




    }
}

Forked