<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Sealyu

    --- 博客已遷移至: http://www.sealyu.com/blog

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      618 隨筆 :: 87 文章 :: 225 評論 :: 0 Trackbacks
    在Papervision3D中,3D場景交互事件主要用到了一個新的類:InteractiveScene3DEvent,這個類在 org.papervision3d.events包中,主要定義了有關鼠標和3D對象之間交互時事件驅動的一些靜態屬性,如點擊、移動、滑開、滑上、按 下、按下并釋放、按下釋放移開等。
    該類的構造函數是: 

    InteractiveScene3DEvent (type:String, container3d:DisplayObject3D = null, bubbles:Boolean = false, cancelable:Boolean = false)

         詳細的參數就不再一一解釋,你只要記住它的用法比照Flash CS3中的MouseEvent類使用,這里簡單提供在Flash CS3幀上的測試代碼(使用前不要忘了要import包類): 

    import org.papervision3d.events.InteractiveScene3DEvent;
    addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, onHandle);
    addEventListener(InteractiveScene3DEvent.OBJECT_MOVE, onHandle);
    addEventListener(InteractiveScene3DEvent.OBJECT_OUT, onHandle);
    addEventListener(InteractiveScene3DEvent.OBJECT_OVER, onHandle);
    addEventListener(InteractiveScene3DEvent.OBJECT_PRESS, onHandle);
    addEventListener(InteractiveScene3DEvent.OBJECT_RELEASE, onHandle);
    addEventListener(InteractiveScene3DEvent.OBJECT_RELEASE_OUTSIDE, onHandle);

    private function onHandle(e:InteractiveScene3DEvent):void
    {
     trace(e.type);
    }

         注意觀察輸出面板相關的信息!

        基本3D交互場景事件實例:

        本實例是場景中有一個旋轉的平面Plane,正反面都有貼圖,當用鼠標移上或移開時交換顯示不同的圖片,點擊該平面時向相反方向旋轉。在代碼中,我預先創 建一個3D對象Plane平面,并使用兩張不同的圖片來做材質貼圖,然后使用InteractiveScene3DEvent來驅動鼠標事件。效果圖示如 下:

     

        具體代碼如下:

     

     package
    {
     
     
        import PaperBase;
        import org.papervision3d.objects.DisplayObject3D;
     import org.papervision3d.events.InteractiveScene3DEvent;  
        import org.papervision3d.materials.BitmapFileMaterial;
     import org.papervision3d.objects.primitives.Plane;
     
     import it.flashfuck.debugger.FPSMonitor;
       
        public class MainInteractiveScene3dEvent extends PaperBase
     {
      private var ourMaterial:BitmapFileMaterial = new BitmapFileMaterial("img/pic43.jpg");//用于plane平面對象上的材質貼圖
      private var ourOverMaterial:BitmapFileMaterial = new BitmapFileMaterial("img/pic12.jpg");//用于當鼠標移到plane平面上時的材質貼圖
      private var yawspeed:Number = 3;//設置yaw()方法的旋轉角度
      private var plane:DisplayObject3D;      
          
           public function MainInteractiveScene3dEvent()
        {
         addChild(new FPSMonitor());
         init();
           }
          
           override protected function init3d():void
        {
         ourMaterial.interactive = true;//設置材質交互
         ourMaterial.doubleSided = true;
         ourOverMaterial.interactive = true;
         ourOverMaterial.doubleSided = true;
        
         plane = new Plane(ourMaterial,1000,1000,4,4);
         default_scene.addChild(plane);
         plane.addEventListener(InteractiveScene3DEvent.OBJECT_PRESS, onInteractiveHandle);
         plane.addEventListener(InteractiveScene3DEvent.OBJECT_OUT, onInteractiveHandle);
         plane.addEventListener(InteractiveScene3DEvent.OBJECT_OVER, onInteractiveHandle);    
           }
       
        private function onInteractiveHandle(e:InteractiveScene3DEvent):void
        {
        if (e.type == "mousePress")
         {
          yawspeed *= -1;
         }
         if (e.type == "mouseOut")
         {
          plane.material=ourMaterial
         }
         if (e.type == "mouseOver")
         {
          plane.material = ourOverMaterial;
         }
        }
           override protected function processFrame():void
        {
         plane.yaw(yawspeed);
           }
        }
    }
     
     

        總結:本節主要是關于交互場景3D事件類的基本用法,比 較簡單。實際上,該類的使用和Flash CS3中的MouseEvent類一樣;另外需要注意的是,該類定義的是靜態屬性,因此可以“類名.屬性”的方式直接使用;事件處理器函數可以調用同一個 函數實現不同的功能,如本例中對3D鼠標事件的處理采用if條件來實現指定的事件處理,算是對代碼的一種優化吧。如果對代碼中相關的材質貼圖不是很明白, 可以參看前面的內容。

        本教程可自由轉載,請注明轉載出處,謝謝~!

    posted on 2008-11-19 14:52 seal 閱讀(846) 評論(1)  編輯  收藏 所屬分類: Flex+ActionScript

    評論

    # re: Papervision3D 基本3D交互場景事件(轉) 2009-04-30 12:01 孫令純
    以你的代碼根本做不出來!  回復  更多評論
      

    主站蜘蛛池模板: 亚洲免费日韩无码系列| 成年在线网站免费观看无广告| 95免费观看体验区视频| 中字幕视频在线永久在线观看免费| 永久久久免费浮力影院| 亚洲AV无码之日韩精品| 亚洲AV日韩AV天堂久久| 亚洲一区二区三区精品视频| 天天综合亚洲色在线精品| a级毛片毛片免费观看久潮喷| 99re在线视频免费观看| 免费黄色小视频网站| 亚洲国产一成人久久精品| 亚洲一级黄色大片| 一个人晚上在线观看的免费视频 | 国产成人精品日本亚洲专| 99亚洲男女激情在线观看| 成人黄网站片免费视频| 性做久久久久久久免费看| 精品国产日韩亚洲一区| 亚洲精品国产福利片| 黄色免费在线网址| 亚洲视频在线免费看| 国产精品免费小视频| 久久精品国产亚洲AV电影| 精品久久久久久久久亚洲偷窥女厕| 中文字幕免费不卡二区| 在线A级毛片无码免费真人| 国产亚洲精AA在线观看SEE| 亚洲另类精品xxxx人妖| jzzjzz免费观看大片免费| 一个人免费观看视频www| 91麻豆精品国产自产在线观看亚洲| 亚洲一区中文字幕在线电影网| 有码人妻在线免费看片| 亚洲三级高清免费| 色噜噜AV亚洲色一区二区| 亚洲欧美日韩国产精品一区| 无码囯产精品一区二区免费| 国产免费爽爽视频免费可以看| 久久久亚洲裙底偷窥综合|