簡單的 Carousel 寫法

一般常見的 Carousel 是以圓的半徑跟徑度換算 Cos、Sin來定位,如果是 Flash 3D API 還要多算物件的順序,介紹一個用 PV3D的簡易寫法,只需計算角度即可
觀看範例
package
{
    import flash.events.Event;
    
    import org.papervision3d.materials.ColorMaterial;
    import org.papervision3d.objects.DisplayObject3D;
    import org.papervision3d.objects.primitives.Plane;
    import org.papervision3d.view.BasicView;
    
    /**
     * 簡易Carousel,以PV3D內附的BasicView為基礎,使用yaw()跟moveForward()來放置位置
     */
    [SWF (width = "320", height = "240", backgroundColor = "#000000", frameRate = "30")]
    public class SimpleCarousel extends BasicView
    {
        private var planeNum:uint = 15;
        private var carouselRadius:uint = 400;
        private var carouselContainer:DisplayObject3D = new DisplayObject3D();
        
        public function SimpleCarousel() 
        {                                       
            super(320, 240, true);
            
            for (var i:uint = 0; i < planeNum; i++)
            {
                var planeWidth:uint = 100;
                var planeHeight:uint = 100;                             
                var randomColor:uint = Math.floor(Math.random() * 0x1000000);
                var colorMat:ColorMaterial = new ColorMaterial(randomColor, .7);
                
                colorMat.doubleSided = true;
                
                var plane:Plane = new Plane(colorMat, planeWidth, planeHeight, 2, 2);                           
                var angle:uint = (360 / planeNum) * i;
                
                //旋轉角度後,直接朝該正面前進
                plane.yaw(angle);
                plane.moveForward(carouselRadius);
                
                carouselContainer.addChild(plane);                              
            }
            
            this.addChild(this.viewport);
            
            this.scene.addChild(carouselContainer);
            this.startRendering();                  
        }
        
        override protected function onRenderTick(event:Event=null):void
        {
            super.onRenderTick(event);
            
            carouselContainer.yaw(2);
        }
    }
}
這樣就完成了,同理,如果將垂直加入運算,也可簡單做出球體的感覺

2 意見 :: 簡單的 Carousel 寫法

  1. good jobs~

    你好,我是 flash 的初學者,最近正在學

    pv3d , 從 google 找到這個網站,早上在研究

    你所寫的 carousel 範例,覺得真的很不錯。

    之前參考過許多網路上的範例,你寫的是讓我覺

    得最好懂的, : ) 大推!

  2. 感謝你的支持,你的回應是我繼續寫下去的動力^_^