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

    主站蜘蛛池模板: 亚洲另类古典武侠| 国产亚洲免费的视频看| 欧洲乱码伦视频免费| 国产亚洲色婷婷久久99精品 | 亚洲啪啪AV无码片| 天堂亚洲免费视频| 亚洲精品乱码久久久久久| jizz中国免费| 亚洲六月丁香六月婷婷蜜芽| 国产黄色一级毛片亚洲黄片大全| 一级一级一片免费高清| 手机在线看永久av片免费| 一个人免费播放在线视频看片| 暖暖免费高清日本中文| 成人五级毛片免费播放| 亚洲日本va午夜中文字幕一区| 亚洲av永久无码精品古装片| 最近中文字幕免费mv视频7| 成人无码区免费A片视频WWW | 红杏亚洲影院一区二区三区| 精品亚洲成a人在线观看| 国产又黄又爽又猛免费app| 免费在线看污视频| 亚洲妇熟XXXX妇色黄| 波多野结衣免费一区视频| 美女被免费网站在线视频免费| 亚洲国产一区二区三区青草影视| 国产国产成年年人免费看片| 国产免费牲交视频| 精品国产污污免费网站aⅴ| 亚洲情a成黄在线观看动漫尤物| 亚洲人xxx日本人18| 黄人成a动漫片免费网站| xvideos永久免费入口| 国产成人精品日本亚洲专一区| 久久精品国产亚洲AV高清热| 四虎影视永久免费观看网址| 亚洲国产成人久久综合| 亚洲宅男天堂a在线| 亚洲精品高清视频| 亚洲精品成人片在线播放 |