PV3D | 3面回転スクリーン

by Nyarineko
 PV3D | 3面回転スクリーン
あとでエフェクトと鏡面反射をつけてみよう
*追記 ReflectionView使ったばーじょん↓
http://wonderfl.net/code/351db3b9735ea827a53f0f6b4c6f566834efc70f
♥0 | Line 102 | Modified 2009-10-02 20:27:39 | MIT License
play

ActionScript3 source code

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

// PV3D | 3面回転スクリーン
// あとでエフェクトと鏡面反射をつけてみよう
// *追記 ReflectionView使ったばーじょん↓
// http://wonderfl.net/code/351db3b9735ea827a53f0f6b4c6f566834efc70f
package {
    import flash.display.Sprite;
    import flash.display.MovieClip;
    import flash.text.TextField;
    import flash.text.TextFormat;
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.BlendMode;
    import flash.filters.BlurFilter;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import org.papervision3d.view.*;
    import org.papervision3d.cameras.Camera3D;
    import org.papervision3d.render.BasicRenderEngine;
    import org.papervision3d.scenes.Scene3D;
    import org.papervision3d.objects.primitives.*;
    import org.papervision3d.materials.*;
    import org.papervision3d.materials.utils.MaterialsList;
    import org.papervision3d.core.effects.view.ReflectionView;
    import org.papervision3d.objects.*;
    import caurina.transitions.*;
 
    [SWF(width = "465", height = "465", backgroundColor = "0", fps = "30")]
    
    public class Main extends Sprite {
        private var viewport:Viewport3D;
        private var camera:Camera3D;
        private var scene:Scene3D = new Scene3D();
        private var renderer:BasicRenderEngine;
        private var plane:Plane;
        private var animateFlg:Boolean = true;
        private var rootNode  : DisplayObject3D;
 
        public function Main() {
            viewport = new Viewport3D(465,465,true,true);
            viewport.opaqueBackground = 0x000000;
            addChild(viewport);
            rootNode = scene.addChild( new DisplayObject3D( "rootNode" ) );
            renderer = new BasicRenderEngine();
            camera = new Camera3D();
            camera.x = 0;
            camera.y = 0;
            camera.z = -500;
            addEventListener(Event.ENTER_FRAME,handler);
            
            var mc1:MovieClip =  new MovieClip();
            var mct:TextField = new TextField();
            var fmt:TextFormat = new TextFormat();
            fmt.size = 20;
            fmt.font = "A-OTF 新ゴ Pro M";
            mct.defaultTextFormat = fmt;
            mct.text = "please click here!";
            mct.textColor =0xffffff;
            mct.x = 50;
            mct.width=200;
            mct.y = 140;
            var bmp1:Bitmap = new Bitmap(new BitmapData(300, 300, false, 0x0000AA));
            mc1.addChild(bmp1);
            mc1.addChild(mct);
            var mc2:MovieClip =  new MovieClip();
            var bmp2:Bitmap = new Bitmap(new BitmapData(300, 300, false, 0x0066AA));
            mc2.addChild(bmp2);
            var mc3:MovieClip =  new MovieClip();
            var bmp3:Bitmap = new Bitmap(new BitmapData(300, 300, false, 0x6600AA));
            mc3.addChild(bmp3);
            
            var material1:MovieMaterial = new MovieMaterial(mc1,true,true );
            var material2:MovieMaterial = new MovieMaterial(mc2,true,true );
            var material3:MovieMaterial = new MovieMaterial(mc3,true,true );
            
            var myPlane1:Plane = new Plane(material1,300,300,12,12);
            var myPlane2:Plane = new Plane(material2,300,300,12,12);
            var myPlane3:Plane = new Plane(material3,300,300,12,12);
            for each(var i:* in myPlane1.geometry.vertices){
              i.z-=86;
            }
            for each(i in myPlane2.geometry.vertices){
              i.z-=86;
            }
            for each(i in myPlane3.geometry.vertices){
              i.z-=86;
            }
            myPlane2.rotationY+=120;
            myPlane3.rotationY+=240;
            rootNode.addChild( myPlane1 );
            rootNode.addChild( myPlane2 );
            rootNode.addChild( myPlane3 );
            rootNode.rotationY+=20;
            rootNode.x+=100;
 
            addEventListener(MouseEvent.MOUSE_DOWN,evMouseDown);
 
        }
        public function handler(event:Event):void
        {
            renderer.renderScene( scene , camera, viewport );
        }
        public function evMouseDown(event:MouseEvent):void{
            if(animateFlg){
                animateFlg = false;
                Tweener.addTween(rootNode,{rotationY:rootNode.rotationY+120,time:2,
                transition:"easeOutElastic",onComplete:setAnimateFlag});
            }
        }
        public function setAnimateFlag():void
        {
             animateFlg = true;
        }
    }
}