クリックでカメラ位置を変える

by Nowloading_
♥0 | Line 145 | Modified 2011-09-14 16:10:14 | MIT License
play

ActionScript3 source code

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

package {
    import org.papervision3d.materials.*;
    import org.papervision3d.objects.primitives.*;
    import org.papervision3d.view.*;
    import flash.events.MouseEvent;
    import caurina.transitions.Tweener;
    [SWF(backgroundColor = 0x000000)]
    public class cameraPos extends BasicView {
        private var ya:yazirusi;
        private var rad:int = 30;
        private var d:int = 1000;
        public function cameraPos() {
            var material:WireframeMaterial = new WireframeMaterial(0xff9999,1,5);
            material.doubleSided = true;
            var plane:Plane = new Plane(material,400,400,3,3);
            plane.rotationX = 90;
            scene.addChild(plane);
            var arrow:Arrow = new Arrow(material);
            arrow.y = 250;
            scene.addChild(arrow);
            
            ya = new yazirusi();
            stage.addChild(ya);
            ya.x = 400;
            ya.y = 400;
            camera.y = 500;
            startRendering();
            
            camera.z = -d*Math.cos(rad*Math.PI/180);
            camera.x = d*Math.sin(rad*Math.PI/180);
            for(var i:int; i<ya.ya.length; i++){
                ya.ya[i].addEventListener(MouseEvent.CLICK,oMC);
            }
            ya.maru.addEventListener(MouseEvent.CLICK,oMC);
        }
        private function oMC(e:MouseEvent):void{
            switch (e.target.name) {
                case "0":
                    rad += -90;
                    Tweener.addTween(camera,{
                        z: -d*Math.cos(rad*Math.PI/180),
                        time: 2,
                        transition: "easeInOutSine"
                    });
                    Tweener.addTween(camera,{
                        x: d*Math.sin(rad*Math.PI/180),
                        time: 2,
                        transition: "easeInOutSine"
                    });
                break;
                case "1":
                    if(camera.y == 500){
                        Tweener.addTween(camera,{
                            y: 700,
                            time: 1,
                            transition: "easeInOutSine"
                        });
                    }
                break;
                case "2":
                    rad += 90;
                    Tweener.addTween(camera,{
                        z: -d*Math.cos(rad*Math.PI/180),
                        time: 2,
                        transition: "easeInOutSine"
                    });
                    Tweener.addTween(camera,{
                        x: d*Math.sin(rad*Math.PI/180),
                        time: 2,
                        transition: "easeInOutSine"
                    });
                break;
                case "3":
                    if(camera.y == 700){
                        Tweener.addTween(camera,{
                            y: 500,
                            time: 1,
                            transition: "easeInOutSine"
                        });
                    }
                break;
                case "4":
                    if(d == 1000){
                        d = 700;
                    }else {
                        d = 1000;
                    }
                    Tweener.addTween(camera,{
                        z: -d*Math.cos(rad*Math.PI/180),
                        time: 1,
                        transition: "easeInOutSine"
                    });
                    Tweener.addTween(camera,{
                        x: d*Math.sin(rad*Math.PI/180),
                        time: 1,
                        transition: "easeInOutSine"
                    });
                break;
                default:
            }
        }
    }
}
import flash.display.Sprite;
import flash.events.MouseEvent;
class yazirusi extends Sprite{
    public var ya:Array = new Array();
    public var maru:Sprite;
    public function yazirusi(){
        init();
    }
    private function init():void{
        graphics.lineStyle(3,0x444444);
        graphics.beginFill(0xffffff,0.5);
        graphics.drawCircle(0,0,40);
        graphics.lineStyle(5,0xff9999);
        graphics.beginFill(0x999999,0.5);
        graphics.drawCircle(0,0,32);
        graphics.endFill();
         for(var i:int =0; i<4; i++){
             var spr:Sprite = new Sprite();
             spr.graphics.lineStyle(1);
             spr.graphics.beginFill(0xff0000);
             spr.graphics.moveTo(-28,0);
             spr.graphics.lineTo(-12,-7);
             spr.graphics.lineTo(-12,7);
             spr.graphics.lineTo(-28,0);
             spr.graphics.endFill();
             spr.rotation = 90 * i;
             addChild(spr);
             spr.buttonMode = true;
             spr.name = String(i);
             ya[i] = spr;
             ya[i].addEventListener(MouseEvent.CLICK,oMC);
         }
         maru = new Sprite();
         maru.graphics.lineStyle(1);
         maru.graphics.beginFill(0xff0000);
         maru.graphics.drawCircle(0,0,7);
         maru.graphics.endFill();
         addChild(maru);
         maru.buttonMode = true;
         maru.name = String(4);
    }
    private function oMC(e:MouseEvent):void{
    }
}