Jun 21

椭圆运动的图片show

PV3D

package {
    import caurina.transitions.Tweener;
    import flash.events.Event;
    import flash.filters.BlurFilter;
    import flash.display.*;
    import flash.events.MouseEvent;
    import com.jacky.utils.getURL;
    import org.papervision3d.materials.MovieAssetMaterial;
    import org.papervision3d.core.math.Quaternion;
    import org.papervision3d.objects.DisplayObject3D;
    import org.papervision3d.objects.primitives.Plane;
    import org.papervision3d.core.effects.view.ReflectionView;
    import org.papervision3d.events.InteractiveScene3DEvent;
    public class PV3D_t005 extends ReflectionView {
        private var flag:Boolean;
        private var oldID:uint = 2;
        private var len:Number=0;
        private var Material0:MovieAssetMaterial = new MovieAssetMaterial("mc1");
        private var Material1:MovieAssetMaterial = new MovieAssetMaterial("mc2");
        private var Material2:MovieAssetMaterial = new MovieAssetMaterial("mc3");
        private var Material3:MovieAssetMaterial = new MovieAssetMaterial("mc4");
        private var Material4:MovieAssetMaterial = new MovieAssetMaterial("mc5");
        private var carousel:DisplayObject3D = new DisplayObject3D();
        private var tmpArr:Array=new Array();
        private var xrr:Array = new Array(-296, -158, 0, 158, 296);
        private var arr:Array = new Array(-15, -25, 0, 25, 15);
        private var zrr:Array = new Array(0, -20, -50, -20, 0);
        private var clickD:Boolean=true;
        public function PV3D_t005() {
            super(980,310,false,false);
            init();
            surfaceHeight = -250;
            this.addEventListener(Event.ENTER_FRAME,enterFrame);
        }
        private function init():void {
            for (var i:int = 0; i < 5; i++) {
                var Material:MovieAssetMaterial=this["Material"+i];
                Material.interactive=true;
                Material.allowAutoResize=true;
                Material.doubleSided=false;
                var plane:DisplayObject3D =new Plane(Material,432,259,8,8);
                viewportReflection.filters = [new BlurFilter(3,3,3)];
                viewportReflection.alpha=.2;
                //添加模糊滤镜后看起来会更逼真
                trace(Material.movie)
                
                viewport.interactive=true;

                plane.x = xrr[i];
                plane.rotationY = arr[i];
                if (i==2) {
                    plane.z=-50;
                }
                plane.id=i;
                plane.name="plan"+i;
                plane.addEventListener(InteractiveScene3DEvent.OBJECT_OVER, overHander);
                plane.addEventListener(InteractiveScene3DEvent.OBJECT_OUT, outHander);
                plane.addEventListener(InteractiveScene3DEvent.OBJECT_PRESS, pressHander);
                carousel.addChild(plane);
                //carousel相当于一个planeGroup,plane是多个的
            }
            btn.addEventListener(MouseEvent.CLICK,clickF)
            camera.z=-420;
            carousel.y=15;
            scene.addChild(carousel);
        }
        private function clickF(e){
            if(clickD){
                getURL("index-nei.html","_blank")
            }
        }
        private function overHander(e:InteractiveScene3DEvent):void {
            viewport.buttonMode=true;
        }
        private function outHander(e:InteractiveScene3DEvent):void {
            viewport.buttonMode=false;
        }
        private function preID(do3D) {

            for (var i=0; i<5; i++) {
                var tmp=i-len;
                if (tmp<0) {
                    tmp=tmp+5;
                }
                var plane=carousel.getChildByName("plan"+i);

                var tmpPlan=carousel.getChildByName("plan"+tmp);
                tmpArr[i]=tmpPlan.id;
                Tweener.addTween(plane,{rotationY:tmpPlan.rotationY,x:tmpPlan.x,z:tmpPlan.z,time:1,transition:"easeInOutQuint"});
                Tweener.addTween(btn,{alpha:1,y:292,time:2,transition:"easeInOutQuint"});
            }
            checkout();
        }
        private function checkout() {
            for (var i=0; i<5; i++) {
                var plane=carousel.getChildByName("plan"+i);
                plane.id=tmpArr[i];
                
            }
        }
        private function nextID(do3D) {
            for (var i=0; i<5; i++) {
                var tmp=i-len;
                if (tmp>4) {
                    tmp=tmp-5;
                }
                var plane=carousel.getChildByName("plan"+i);

                var tmpPlan=carousel.getChildByName("plan"+tmp);
                tmpArr[i]=tmpPlan.id;
                Tweener.addTween(plane,{rotationY:tmpPlan.rotationY,x:tmpPlan.x,z:tmpPlan.z,time:1,transition:"easeInOutQuint"});
                Tweener.addTween(btn,{alpha:1,y:292,time:2,transition:"easeInOutQuint"});
            }
            checkout();
        }
        private function pressHander(e:InteractiveScene3DEvent):void {
            //01234
            btn.alpha=0;
            btn.y=310;
            
            var plane:DisplayObject3D=e.target as DisplayObject3D;
            len=plane.id-oldID;
            if(plane.name=="plan2"){
                clickD=true;
            }else{
                clickD=false;
            }
            if (len>0) {
                preID(plane);
            } else if (len<0) {
                nextID(plane);
            }else{
                if(plane.id==2){
                    if(plane.name=="plan2"){
                        getURL("index-nei.html","_blank")
                    }
                }
            }

        }
        private function enterFrame(e:Event):void {
            singleRender();
        }
    }
}

tags:PV3D  

to "椭圆运动的图片show"

Leave a Reply