<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 孫令純
    以你的代碼根本做不出來!  回復  更多評論
      

    主站蜘蛛池模板: 亚洲成av人片不卡无码| 久久亚洲国产成人精品无码区| 亚洲性色成人av天堂| 亚洲精品亚洲人成在线观看下载| a毛片免费全部在线播放**| 亚洲五月六月丁香激情| 精品熟女少妇AV免费观看| 特色特黄a毛片高清免费观看| 亚洲av午夜福利精品一区人妖| 99视频全部免费精品全部四虎| 美女露100%胸无遮挡免费观看| 久久噜噜噜久久亚洲va久| 手机在线免费视频| 一级特黄录像免费播放肥| 亚洲国产精品专区| 久久久久亚洲AV成人网人人软件| 午夜视频在线观看免费完整版| a级毛片高清免费视频| 一级特级女人18毛片免费视频| 亚洲一级片在线播放| 国产精品亚洲综合专区片高清久久久| 麻豆国产VA免费精品高清在线 | 免费无码又爽又刺激高潮视频| 男人天堂2018亚洲男人天堂| 亚洲乱码中文字幕综合234| 亚洲?V无码成人精品区日韩| 国色精品卡一卡2卡3卡4卡免费| 一区二区视频免费观看| 黄色三级三级三级免费看| 婷婷亚洲综合五月天小说在线| 亚洲视频在线观看地址| 国产成人亚洲综合无码| 免费看AV毛片一区二区三区| 精品免费久久久久久成人影院| 女人毛片a级大学毛片免费| 国产网站在线免费观看| 国产免费毛不卡片| 日韩精品无码一区二区三区免费| 久久免费国产视频| 国内精品免费久久影院| 日本高清不卡aⅴ免费网站|