[練習]papervision3D,Tweener,文字

by Tamanegi_kenshi forked from package土台用 (diff: 97)
♥0 | Line 73 | Modified 2010-12-17 13:05:21 | 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/9lVZ
 */

package {
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.events.TimerEvent;
    import flash.utils.Timer;
 
    import org.papervision3d.cameras.Camera3D;
    import org.papervision3d.materials.special.Letter3DMaterial;
    import org.papervision3d.render.BasicRenderEngine;
    import org.papervision3d.scenes.Scene3D;
    import org.papervision3d.typography.Text3D;
    import org.papervision3d.typography.fonts.HelveticaBold;
    import org.papervision3d.view.Viewport3D;
    
    import caurina.transitions.Tweener;
 
    public class PVdemo extends Sprite {
        public var viewport:Viewport3D;
        public var scene:Scene3D;
        public var camera:Camera3D;
        public var renderer:BasicRenderEngine;
        public var letterformat:Letter3DMaterial;
        public var textArr:Array=new Array();
        private var angle:int=0;
        private var isClick:Boolean=false;
        private var myName:String="ulfuls";
        private var sugatoArr:Array=["GEORGIA","MAX","COFFEE"];
        private var sugatoNum:int=sugatoArr.length;
 
 
        public function PVdemo() {
            viewport = new Viewport3D(stage.stageWidth, stage.stageHeight);
            addChild(viewport);//viewportを表示ツリーに追加
 
            renderer = new BasicRenderEngine();
            scene = new Scene3D();
            camera = new Camera3D();
            
           
 
            //文字の設定 引数は色コード・透過度
            for(var i:int=0;i<sugatoNum;i++){
            var ookisa:int=Math.floor(Math.random()*20);
            letterformat = new Letter3DMaterial(Math.random()*0xffffff,1);
            letterformat.interactive;
            letterformat.doubleSided = true;
 
            //表示文字内容の設定
            //引数は表示文字・フォント・Letter3DMaterial
            
            var textdata:Text3D = new Text3D(sugatoArr[i], new HelveticaBold() , letterformat);
 
            scene.addChild(textdata);
            textdata.x=-250+i*100;
            textArr.push(textdata);
            
            }
            addEventListener(Event.ENTER_FRAME,onEnter); 
            stage.addEventListener(MouseEvent.CLICK,onClick);
            
        }// 
        
        private function onEnter(event:Event):void{
            
            angle-=2;
            for(var i:int=0;i<sugatoNum;i++){    
            var radian:Number=(360/sugatoNum*i+angle)*Math.PI/180;
            
            textArr[i].z=Math.sin(radian)*500;
            textArr[i].x=Math.cos(radian)*500;
            textArr[i].y=Math.sin(radian)*50;
            
            textArr[i].rotationY = (360/sugatoNumi+ angle) -90;
            
           
             renderer.renderScene(scene,camera,viewport);
            }//fori
            
        }//onEnter
        
        private function onClick(event:MouseEvent):void{
            if(isClick==false){
                for(var i:int=0;i<sugatoNum;i++){
                var scale:int=Math.floor(Math.random()*8+2);
                var rote:int=Math.floor(Math.random()*1000);
                Tweener.addTween(textArr[i],{scaleX:scale,scaleY:scale,rotationZ:rote,transition:"easeInOutBack",delay:i,time:1});
                }//for i
                isClick=true;
                
            }else{
                Tweener.removeAllTweens();
                for(var j:int=0;j<sugatoNum;j++){
                Tweener.addTween(textArr[j],{scaleX:1,scaleY:1,rotationZ:0,transition:"easeOutQuart",time:1});
                }//for j
                isClick=false;
            }//if


            
        }//onClick

 
}}