<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
    1、修改PaperBase基類,存貯新的相機、場景和視圖區,然后重新渲染產生新的效果。因為,首先需要定義三個新的類成員屬性:

     

     public var current_scene:Scene3D;//為實現3D鍵盤交互準備
     public var current_camera:CameraObject3D;//為實現3D鍵盤交互準備
     public var current_viewport:Viewport3D;//為實現3D鍵盤交互準備

     

        然后修改initPapervision函數,把原來默認的場景、相機、視圖區更改為這三個類屬性:

     

     current_camera = default_camera;
     current_scene = default_scene;
     current_viewport = viewport;

     

        用新的類成員變量重新渲染:

     

     renderer.renderScene(current_scene, current_camera, current_viewport);

     

        2、新建3D鍵盤交互類:MainKeyboardInteraction

        在這類中我將使用Plane(平面類)加載外部圖片貼圖來實現3D鍵盤交互,并且設定使用鍵盤上的w、a、s、d這4個按鍵控制Plane的平移,旋轉交互效果,代碼如下:

     

     package
    {
     
     
        import PaperBase;
        import flash.events.KeyboardEvent;
        import org.papervision3d.cameras.FreeCamera3D;
        import org.papervision3d.objects.primitives.Plane;
        import org.papervision3d.materials.BitmapFileMaterial;
       
        public class MainKeyboardInteraction extends PaperBase {
          
           public var wdown:Boolean = false;
           public var adown:Boolean = false;
           public var sdown:Boolean = false;
           public var ddown:Boolean = false;
           public var camera:FreeCamera3D;
          
           public function MainKeyboardInteraction() {
             init();
             stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
             stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
           }
          
           public function onKeyDown( event:KeyboardEvent ):void {
             switch(event.keyCode) {//w:87  a:65  s:83  d:68
                  case 87:
                      wdown = true;
                  break;
                  case 65:
                      adown = true;
                  break;
                  case 83:
                      sdown = true;
                  break;
                  case 68:
                      ddown = true;
                  break;
             }
           }
          
           public function onKeyUp( event:KeyboardEvent ):void {
                  switch(event.keyCode) {
                  case 87:
                      wdown = false;
                  break;
                  case 65:
                      adown = false;
                  break;
                  case 83:
                      sdown = false;
                  break;
                  case 68:
                      ddown = false;
                  break;
             }
           }
          
           override protected function init3d():void {
             camera = new FreeCamera3D(1, 500);
             camera.moveUp(400);
             current_camera = camera;
             for (var x:Number = 0; x <4; x++) {
                  for (var y:Number = 0; y <4; y++) {
                      var p:Plane = new Plane(new BitmapFileMaterial("img/concretetex02.jpg"));
                      p.pitch(90);
                      p.x = (x * 1000)-2000;
                      p.z = (y * 1000)-2000;
                      default_scene.addChild(p);
                  }
             }
           }
           override protected function processFrame():void {
             if (wdown) {
                  camera.moveForward(60);
             }
             if (sdown) {
                  camera.moveBackward(60);
             }
             if (adown) {
                  camera.yaw( -8);
             }
             if (ddown) {
                  camera.yaw( 8);
             }
           }
        }
    }

     

        代碼思路清晰,無非是用stage來偵聽事件(鍵盤事件)~!最終效果截圖如下:

        總結:實現Papervision3D鍵盤交互效果要注意對舞臺的偵聽事件的處理,當需要偵聽鍵盤時不要忘了事先import鍵盤類,并同時override父類相關的函數。

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

    posted on 2008-11-19 14:51 seal 閱讀(415) 評論(0)  編輯  收藏 所屬分類: Flex+ActionScript
    主站蜘蛛池模板: 亚洲欧洲精品视频在线观看| 久久99国产亚洲高清观看首页| 亚洲免费观看在线视频| 久草免费福利资源站| 亚洲爆乳精品无码一区二区三区| 精品久久久久久国产免费了| 国产午夜亚洲精品午夜鲁丝片| 一级做a爰片性色毛片免费网站 | 国产人成亚洲第一网站在线播放| 久久久久久精品免费免费自慰| 亚洲最大中文字幕| 久久久www成人免费毛片 | 亚洲午夜av影院| 中文字幕无码免费久久| 亚洲高清在线播放| 特级做A爰片毛片免费69| 亚洲1区2区3区精华液| MM131亚洲国产美女久久| a毛片免费全部播放完整成| 67pao强力打造67194在线午夜亚洲| 2019中文字幕在线电影免费| 亚洲AV男人的天堂在线观看| 国产免费啪嗒啪嗒视频看看| 一级黄色免费毛片| 亚洲午夜在线电影| 天天摸天天操免费播放小视频| 婷婷国产偷v国产偷v亚洲| 色噜噜AV亚洲色一区二区| 2021国内精品久久久久精免费| 亚洲欧美日韩中文高清www777| 亚洲人成无码网站久久99热国产| 免费无遮挡无码永久视频| 伊人久久亚洲综合影院首页| 亚洲国产成人精品91久久久| 亚洲免费在线播放| 亚洲日韩一区二区三区| 国产亚洲视频在线播放| 免费无码又爽又刺激聊天APP| 猫咪www免费人成网站| 日韩精品亚洲人成在线观看 | 色天使亚洲综合在线观看|