[練習]数字のカウント(コードが無駄に長い…)

by Tamanegi_kenshi
[メモ]
papervision3Dの練習
とりあえず書いた感じです
もっとコードをスマートにしたい…
forの使い方の理解が不十分だと痛感しました~
♥0 | Line 279 | Modified 2010-08-14 11:32:11 | 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/a9v9
 */

//[メモ]
//papervision3Dの練習
//とりあえず書いた感じです
//もっとコードをスマートにしたい…
//forの使い方の理解が不十分だと痛感しました~
package {
    import flash.events.Event;
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import flash.events.TimerEvent;
    import flash.utils.Timer;
    
    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.WireframeMaterial;
    import org.papervision3d.materials.ColorMaterial;
    import org.papervision3d.materials.utils.MaterialsList;
    import org.papervision3d.core.proto.CameraObject3D;
    
   // import caurina.transitions.Tweener;
   
   [SWF(backgroundColor="#000000")]
   
    public class FlashTest extends Sprite {
        
        private var camera:Camera3D;
        private var scene:Scene3D;
        private var viewport:Viewport3D;
        private var renderer:BasicRenderEngine;
        private var angleX:Number = 0;
        private var angleY:Number = 0;
        private var cubeArr:Array = [];
        
        private var planeArr:Array = []
        private var planeS:Array = [0, 1, 0];
        
 //       private var cubeX:Array = [];
 //       private var cubeY:Array = [];
 //       private var cubeZ:Array = [];
//1        
        private var scale1:Array = [];
//2
        private var scale2:Array = [];
//3
        private var scale3:Array = [];
//4
        private var scale4:Array = [];            
//5
        private var scale5:Array = [];
//6
        private var scale6:Array = [];
//7
        private var scale7:Array = [];
//8
        private var scale8:Array = [];
//9
        private var scale9:Array = [];
//0
        private var scale0:Array = [];         

        private var isCube:Boolean = true;
        
        private var num:int = 0;
        
        public function FlashTest() {
            init();
        }//FlashTest
        
        private function init():void{
            
            
            camera = new Camera3D();
            camera.z = -500;
            //camera.zoom = 50;
            
            scene = new Scene3D();
            viewport = new Viewport3D(465, 465);
            renderer = new BasicRenderEngine();
           
            addChild(viewport);
            
//移動前のオブジェクト情報            
            for(var i:int = 0; i < 3; i++){
                //for(var j:int = 0; j < 2; j++){
                    for(var k:int = 0; k < 5; k++){
                    var mate:ColorMaterial = new ColorMaterial(0xffff00, 1);
                    var materials:MaterialsList = new MaterialsList({all : mate});   
                   
                    var cube:Cube = new Cube(materials, 50, 50, 50); 
                    scene.addChild(cube);
                     
                    cube.x = -50 + i * 50;
                   // cubeX.push(cube.x);
                    //cube.z = 0;//-50 + j * 50;
                    //cubeZ.push(cube.z);
                    cube.y = -150 + k * 50;
                   // cubeY.push(cube.y);
                    
                    camera.y = 150;
                    camera.rotationX = 15;
                   
                    
                    cubeArr.push(cube);
                    
                   

                    }//for k
               // }//for j
            }//for i
            
//移動後のオブジェクト情報
//1
            for(var s1:int = 0; s1 < cubeArr.length; s1++){
                     if(s1 == 5 || s1 == 6 || s1 == 7 || s1 == 8 || s1 == 9){
                     scale1[s1] = 1;     
                     } else {
                     scale1[s1] = 0;    
                     }
            }
//2
            for(var s2:int = 0; s2 < cubeArr.length; s2++){
                     if(s2 == 3 || s2 == 6 || s2 == 8 || s2 == 11){
                     scale2[s2] = 0;     
                     } else {
                     scale2[s2] = 1;    
                     }
            }
//3
            for(var s3:int = 0; s3 < cubeArr.length; s3++){
                     if(s3 == 1 || s3 == 3 || s3 == 6 || s3 == 8){
                     scale3[s3] = 0;     
                     } else {
                     scale3[s3] = 1;    
                     }
            }
//4
            for(var s4:int = 0; s4 < cubeArr.length; s4++){
                     if(s4 == 0 || s4 == 1 || s4 == 5 || s4 == 6 || s4 == 8 || s4 == 9){
                     scale4[s4] = 0;     
                     } else {
                     scale4[s4] = 1;    
                     }
            }
//5
            for(var s5:int = 0; s5 < cubeArr.length; s5++){
                     if(s5 == 1 || s5 == 6 || s5 == 8 || s5 == 13){
                     scale5[s5] = 0;     
                     } else {
                     scale5[s5] = 1;    
                     }
            }
//6
            for(var s6:int = 0; s6 < cubeArr.length; s6++){
                     if(s6 == 6 || s6 == 8 || s6 == 13){
                     scale6[s6] = 0;     
                     } else {
                     scale6[s6] = 1;    
                     }
            }
//7
            for(var s7:int = 0; s7 < cubeArr.length; s7++){
                     if(s7 == 0 || s7 == 1 || s7 == 2 || s7 == 5 || s7 == 6 || s7 == 7 || s7 == 8){
                     scale7[s7] = 0;     
                     } else {
                     scale7[s7] = 1;    
                     }
            }
//8
            for(var s8:int = 0; s8 < cubeArr.length; s8++){
                     if(s8 == 6 || s8 == 8){
                     scale8[s8] = 0;     
                     } else {
                     scale8[s8] = 1;    
                     }
            }
//9
            for(var s9:int = 0; s9 < cubeArr.length; s9++){
                     if(s9 == 1 ||s9 == 6 || s9 == 8){
                     scale9[s9] = 0;     
                     } else {
                     scale9[s9] = 1;    
                     }
            }
//0
            for(var s0:int = 0; s0 < cubeArr.length; s0++){
                     if(s0 == 6 || s0 == 7 || s0 == 8){
                     scale0[s0] = 0;     
                     } else {
                     scale0[s0] = 1;    
                     }
            }
            
            for(var h:int = 0; h < 3; h++){
            var mate2:ColorMaterial = new ColorMaterial(0x333333);
            var plane:Plane = new Plane(mate2, 50, 50);
            scene.addChild(plane);
            plane.rotationX = 90 ;
            plane.x = -50 + h * 50;
            plane.y = -300;
            planeArr.push(plane);
            }
            
            var myTimer:Timer = new Timer(1000, 0);
            myTimer.addEventListener(TimerEvent.TIMER, onTimer);
            myTimer.start();
            
            
            addEventListener(Event.ENTER_FRAME, onEnter);
        }//init
        
        
       private function onTimer(event:TimerEvent):void{
             if(num == 0){
            removeEventListener(Event.ENTER_FRAME, on0);
            addEventListener(Event.ENTER_FRAME, on1);     
            num = 1;
            } else if(num == 1){
            removeEventListener(Event.ENTER_FRAME, on1);    
            addEventListener(Event.ENTER_FRAME, on2);
            num = 2;
            } else if(num == 2){
            removeEventListener(Event.ENTER_FRAME, on2);    
            addEventListener(Event.ENTER_FRAME, on3);
            num = 3;
            } else if(num == 3){
            removeEventListener(Event.ENTER_FRAME, on3);    
            addEventListener(Event.ENTER_FRAME, on4);
            num = 4;
            } else if(num == 4){
            removeEventListener(Event.ENTER_FRAME, on4);    
            addEventListener(Event.ENTER_FRAME, on5);
            num = 5;
            } else if(num == 5){
            removeEventListener(Event.ENTER_FRAME, on5);    
            addEventListener(Event.ENTER_FRAME, on6);
            num = 6;
            } else if(num == 6){
            removeEventListener(Event.ENTER_FRAME, on6);    
            addEventListener(Event.ENTER_FRAME, on7);
            num = 7;
            } else if(num == 7){
            removeEventListener(Event.ENTER_FRAME, on7);    
            addEventListener(Event.ENTER_FRAME, on8);
            num = 8;
            } else if(num == 8){
            removeEventListener(Event.ENTER_FRAME, on8);    
            addEventListener(Event.ENTER_FRAME, on9);
            num = 9;
            } else if(num == 9){
            removeEventListener(Event.ENTER_FRAME, on9);    
            addEventListener(Event.ENTER_FRAME, on0);
            num = 0;
            }//if
        }//onTimer
        
// 1を作る      
        private function on1(event:Event):void{
           
                for(var i:int = 0; i < cubeArr.length; i++){
                var vx:Number = (scale1[i] - cubeArr[i].scaleX) * 0.3;
                cubeArr[i].scaleX += vx;
                var vz:Number = (scale1[i] - cubeArr[i].scaleZ) * 0.3;
                cubeArr[i].scaleZ += vz;
                var vy:Number = (scale1[i] - cubeArr[i].scaleY) * 0.3;
                cubeArr[i].scaleY += vy;
                }//for i
                for(var iP:int = 0; iP < 3; iP++){
                    var px:Number = (planeS[iP] - planeArr[iP].scaleX) * 0.3;
                    planeArr[iP].scaleX += px;
                    var py:Number = (planeS[iP] - planeArr[iP].scaleY) * 0.3;
                    planeArr[iP].scaleY += py;
                     
                }//for iP

        }//on1
// 2を作る        
        private function on2(event:Event):void{
                
                for(var i2:int = 0; i2 < cubeArr.length; i2++){
                var vxEn:Number = (scale2[i2] - cubeArr[i2].scaleX) * 0.3;
                cubeArr[i2].scaleX += vxEn;
                var vzEn:Number = (scale2[i2]  - cubeArr[i2].scaleZ) * 0.3;
                cubeArr[i2].scaleZ += vzEn;
                var vyEn:Number = (scale2[i2]  - cubeArr[i2].scaleY) * 0.3;
                cubeArr[i2].scaleY += vyEn;
                }//for i
                for(var iP2:int = 0; iP2 < 3; iP2++){
                    var px:Number = (1 - planeArr[iP2].scaleX) * 0.3;
                    planeArr[iP2].scaleX += px;
                    var py:Number = (1 - planeArr[iP2].scaleY) * 0.3;
                    planeArr[iP2].scaleY += py;
                     
                }//for iP                               
        }//on2
// 3を作る        
        private function on3(event:Event):void{
                
                for(var i3:int = 0; i3 < cubeArr.length; i3++){
                var vxEn:Number = (scale3[i3] - cubeArr[i3].scaleX) * 0.3;
                cubeArr[i3].scaleX += vxEn;
                var vzEn:Number = (scale3[i3]  - cubeArr[i3].scaleZ) * 0.3;
                cubeArr[i3].scaleZ += vzEn;
                var vyEn:Number = (scale3[i3]  - cubeArr[i3].scaleY) * 0.3;
                cubeArr[i3].scaleY += vyEn;
                }//for i                               
        }//on2
// 4を作る        
        private function on4(event:Event):void{
                
                for(var i4:int = 0; i4 < cubeArr.length; i4++){
                var vxEn:Number = (scale4[i4] - cubeArr[i4].scaleX) * 0.3;
                cubeArr[i4].scaleX += vxEn;
                var vzEn:Number = (scale4[i4]  - cubeArr[i4].scaleZ) * 0.3;
                cubeArr[i4].scaleZ += vzEn;
                var vyEn:Number = (scale4[i4]  - cubeArr[i4].scaleY) * 0.3;
                cubeArr[i4].scaleY += vyEn;
                }//for i                               
        }//on2
// 5を作る        
        private function on5(event:Event):void{
                
                for(var i5:int = 0; i5 < cubeArr.length; i5++){
                var vxEn:Number = (scale5[i5] - cubeArr[i5].scaleX) * 0.3;
                cubeArr[i5].scaleX += vxEn;
                var vzEn:Number = (scale5[i5]  - cubeArr[i5].scaleZ) * 0.3;
                cubeArr[i5].scaleZ += vzEn;
                var vyEn:Number = (scale5[i5]  - cubeArr[i5].scaleY) * 0.3;
                cubeArr[i5].scaleY += vyEn;
                }//for i                               
        }//on2       
// 6を作る        
        private function on6(event:Event):void{
                
                for(var i6:int = 0; i6 < cubeArr.length; i6++){
                var vxEn:Number = (scale6[i6] - cubeArr[i6].scaleX) * 0.3;
                cubeArr[i6].scaleX += vxEn;
                var vzEn:Number = (scale6[i6] - cubeArr[i6].scaleZ) * 0.3;
                cubeArr[i6].scaleZ += vzEn;
                var vyEn:Number = (scale6[i6] - cubeArr[i6].scaleY) * 0.3;
                cubeArr[i6].scaleY += vyEn;
                }//for i                               
        }//on2        private function onEnter(event:Event):void{
// 7を作る        
        private function on7(event:Event):void{
                
                for(var i7:int = 0; i7 < cubeArr.length; i7++){
                var vxEn:Number = (scale7[i7] - cubeArr[i7].scaleX) * 0.3;
                cubeArr[i7].scaleX += vxEn;
                var vzEn:Number = (scale7[i7]  - cubeArr[i7].scaleZ) * 0.3;
                cubeArr[i7].scaleZ += vzEn;
                var vyEn:Number = (scale7[i7]  - cubeArr[i7].scaleY) * 0.3;
                cubeArr[i7].scaleY += vyEn;
                }//for i                               
        }//on2         /*   
// 8を作る        
        private function on8(event:Event):void{
                
                for(var i8:int = 0; i8 < cubeArr.length; i8++){
                var vxEn:Number = (scale8[i8] - cubeArr[i8].scaleX) * 0.3;
                cubeArr[i8].scaleX += vxEn;
                var vzEn:Number = (scale8[i8]  - cubeArr[i8].scaleZ) * 0.3;
                cubeArr[i8].scaleZ += vzEn;
                var vyEn:Number = (scale8[i8]  - cubeArr[i8].scaleY) * 0.3;
                cubeArr[i8].scaleY += vyEn;
                }//for i                               
        }//on2           angleX += (232 - mouseX) / 100;
// 9を作る        
        private function on9(event:Event):void{
                
                for(var i9:int = 0; i9 < cubeArr.length; i9++){
                var vxEn:Number = (scale9[i9] - cubeArr[i9].scaleX) * 0.3;
                cubeArr[i9].scaleX += vxEn;
                var vzEn:Number = (scale9[i9]  - cubeArr[i9].scaleZ) * 0.3;
                cubeArr[i9].scaleZ += vzEn;
                var vyEn:Number = (scale9[i9]  - cubeArr[i9].scaleY) * 0.3;
                cubeArr[i9].scaleY += vyEn;
                }//for i                               
        }//on2  
// 0を作る        
        private function on0(event:Event):void{
                
                for(var i0:int = 0; i0 < cubeArr.length; i0++){
                var vxEn:Number = (scale0[i0] - cubeArr[i0].scaleX) * 0.3;
                cubeArr[i0].scaleX += vxEn;
                var vzEn:Number = (scale0[i0]  - cubeArr[i0].scaleZ) * 0.3;
                cubeArr[i0].scaleZ += vzEn;
                var vyEn:Number = (scale0[i0]  - cubeArr[i0].scaleY) * 0.3;
                cubeArr[i0].scaleY += vyEn;
                }//for i                               
        }//on2  
        
        

        
        
        
        
        private function onEnter(event:Event):void{
              
           angleX += (232 - mouseX) /100 ;
           camera.z = 500 * (Math.sin(angleX * Math.PI / 180));
           camera.x = 500 * (Math.cos(angleX * Math.PI / 180));
         
         /*
           angleY += (232 - mouseY) / 100;
           camera.z = 500 * (Math.sin(angleY * Math.PI / 180));
           camera.y = 500 * (Math.cos(angleY * Math.PI / 180));
          */  
//atan2を使ってsceneの原点?とカメラとの角度を出す            
          /*  var z1:Number = (0 - camera.z);
            var y1:Number = (0 - camera.y);
            var radian:Number = Math.atan2(y1, z1);
            camera.rotationX =  -radian * 180 / Math.PI;
          */
          
            var x2:Number = (0 - camera.x);
            var z2:Number = (0 - camera.z);
            var radian2:Number = Math.atan2(x2, z2);
            camera.rotationY =  radian2 * 180 / Math.PI;
           
           
//           for(var i:int = 0; i < cubeArr.length; i++){
//           Tweener.addTween(cubeArr[i], {y:100, time:5});
//           };
            camera.y =(465 - mouseY) / 4;
            
            //cubeArr[0].rotationZ += 5;
            
            
            
           
             renderer.renderScene(scene, camera, viewport);
        }//onEnter


    }//class
}//package