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

    主站蜘蛛池模板: 亚洲综合图色40p| 亚洲第一区在线观看| 日本免费人成黄页在线观看视频 | 亚洲理论电影在线观看| 亚洲AV人人澡人人爽人人夜夜| 亚洲伦另类中文字幕| 亚洲娇小性xxxx色| 免费无遮挡无码视频在线观看 | 免费一区二区无码东京热| 中文字幕免费在线| 全免费a级毛片免费**视频| 亚洲国产综合人成综合网站| 亚洲va中文字幕无码久久| 亚洲av无码一区二区三区观看| 怡红院亚洲红怡院在线观看| 成人片黄网站色大片免费观看APP| 最近中文字幕无免费| 四虎永久在线精品免费影视| 亚洲国产精品特色大片观看完整版| 亚洲国产成人资源在线软件| 视频一区在线免费观看| 免费A级毛片在线播放| 国产精品二区三区免费播放心| 亚洲精品高清国产一线久久| 亚洲精品亚洲人成在线播放| 国产伦精品一区二区免费| 国内精自视频品线六区免费| 亚洲国产成人久久综合一区77| 久久久久亚洲精品无码蜜桃| 看亚洲a级一级毛片| 久久A级毛片免费观看| 免费99热在线观看| 亚洲国产精品综合久久2007| 杨幂最新免费特级毛片| 91麻豆最新在线人成免费观看| 吃奶摸下高潮60分钟免费视频| 麻豆亚洲av熟女国产一区二| 免费无码午夜福利片| 青青青国产在线观看免费网站| 久久久久亚洲AV无码专区桃色| 亚洲一欧洲中文字幕在线|