flash on 2010-8-23

by Tamanegi_kenshi
♥0 | Line 136 | Modified 2010-08-24 19:28:56 | 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/yLpF
 */

package {
    import flash.ui.Mouse;
    import flash.events.MouseEvent;
    import flash.events.Event;
    import flash.display.Sprite;
    import org.papervision3d.cameras.Camera3D;
    import org.papervision3d.view.Viewport3D;
    import org.papervision3d.scenes.Scene3D;
    import org.papervision3d.render.BasicRenderEngine;
    import org.papervision3d.objects.primitives.*;
    import org.papervision3d.materials.ColorMaterial;
    import org.papervision3d.events.InteractiveScene3DEvent;
    
    
    import caurina.transitions.Tweener;
    
    [SWF(backgroundColor=0x000000)]    
    
    public class FlashTest extends Sprite {
        private var camera:Camera3D;
        private var scene:Scene3D;
        private var viewport:Viewport3D;
        private var renderer:BasicRenderEngine;
        private var angle:int;
        private var planeArr:Array = [];
        
        private var plane1:Plane;
        private var isPlane1:Boolean = false;
        
        private var planeNum:String;
        private var plane1Arr:Array = [];
        private var colorArr:Array = [];

        
        public function FlashTest() {
            init();            
        }
        private function init():void{
             
            
            camera = new Camera3D();
            scene = new Scene3D();
            viewport = new Viewport3D(465, 465);
            renderer = new BasicRenderEngine;
            
            camera.x = 200;
            camera.z = -1300;
            
            viewport.interactive = true;
            viewport.buttonMode = true;
            addChild(viewport);
            
            for(var k:int = 0; k < 12; k++){
            var color:uint = Math.random() * 0xffffff;
            colorArr.push(color);
            var material1:ColorMaterial = new ColorMaterial(color);
            material1.interactive = true;
            plane1 = new Plane(material1, 500, 300);
            plane1.x = 1500;
            plane1.alpha = 0;
           scene.addChild(plane1);
            plane1.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, pl1Click);
            plane1Arr.push(plane1);
            }
            
    //       stage.addEventListener(MouseEvent.CLICK, onClick);
            
            for(var i:int = 0; i < 12; i++){
            var material:ColorMaterial = new ColorMaterial(colorArr[i])
            material.doubleSided = true;
            material.interactive = true;
           // var radian:Number = 360 / 12 * i * Math.PI / 180;
            var plane:Plane = new Plane(material, 200, 150);
          //  plane.y = Math.cos(radian) * 200;
          //  plane.z = Math.sin(radian) * 200;
            plane.name = "num" + i;
            plane.x = -200;
            scene.addChild(plane);
            planeArr.push(plane);
            plane.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, onCli);
            }         
            
            addEventListener(Event.ENTER_FRAME, onEnter);
            
        }
        private function pl1Click(event:InteractiveScene3DEvent):void{
            isPlane1 = false;
        }
        
        private function onCli(event:InteractiveScene3DEvent):void{
            planeNum = event.target.name;
            isPlane1 = true;
       
            //Tweener.addTween(event.target, {x:100, y:0, z:-1000, time:2});
        }

        private function onEnter(event:Event):void{
  
            if(planeNum == "num0"){
           if(isPlane1 == true){
            var vx:Number = (400 - plane1Arr[0].x) * 0.1;
            plane1Arr[0].x += vx;
            
                if(plane1Arr[0].x <= 400 + 0.5){
                    
                    plane1Arr[0].x = 400;
                    var vsx:Number = (2 - plane1Arr[0].scaleX) * 0.1;
                    var vsy:Number = (2 - plane1Arr[0].scaleY) * 0.1;
                    plane1Arr[0].scaleX += vsx;
                    plane1Arr[0].scaleY += vsy;
                }
                }else if(isPlane1 == false){
                    var vx2:Number = (1500 - plane1Arr[0].x) * 0.1;
               plane1Arr[0].x += vx2;
               if(plane1Arr[0].x >= 800 - 0.5){    
                    var vsx1:Number = (1 - plane1Arr[0].scaleX) * 0.1;
                    var vsy1:Number = (1 - plane1Arr[0].scaleY) * 0.1;
                    plane1Arr[0].scaleX += vsx1;
                    plane1Arr[0].scaleY += vsy1;
                }  
                }

            }else{if(planeNum == "num1"){
           if(isPlane1 == true){
            var vx1:Number = (400 - plane1Arr[1].x) * 0.1;
            plane1Arr[1].x += vx1;
            
                if(plane1Arr[1].x <= 400 + 0.5){
                    
                    plane1Arr[1].x = 400;
                    var vsx11:Number = (2 - plane1Arr[1].scaleX) * 0.1;
                    var vsy11:Number = (2 - plane1Arr[1].scaleY) * 0.1;
                    plane1Arr[1].scaleX += vsx11;
                    plane1Arr[1].scaleY += vsy11;
                }
                }else if(isPlane1 == false){
                    var vx21:Number = (1500 - plane1Arr[1].x) * 0.1;
               plane1Arr[1].x += vx21;
               if(plane1Arr[1].x >= 800 - 0.5){    
                    var vsx21:Number = (1 - plane1Arr[1].scaleX) * 0.1;
                    var vsy21:Number = (1 - plane1Arr[1].scaleY) * 0.1;
                    plane1Arr[1].scaleX += vsx21;
                    plane1Arr[1].scaleY += vsy21;
                }  
                }

            }
               
            }
           
            
   
            
            angle += (232 - mouseY) * 0.01;
            for(var i:int = 0; i < 12; i++){
            var radian:Number = (360 / 12 * i + angle) * Math.PI / 180;
            planeArr[i].y = Math.cos(radian) * 500;
            planeArr[i].z = Math.sin(radian) * 500;
            }
            renderer.renderScene(scene, camera, viewport);
        }
        
        private function onClick(event:MouseEvent):void{
            if(isPlane1 == false){
                isPlane1 = true;
            } else if(isPlane1 == true){
                isPlane1 = false;
            }


        //    plane1.addEventListener(Event.ENTER_FRAME, plane1Enter);
        }
        private function plane1Enter(event:Event):void{
            //var vx:Number = (500 - event.target.x) * 0.1;
            //event.target.x += vx;
            event.target.x +=15;
        }


    }
}