<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
    主站蜘蛛池模板: 亚洲va中文字幕无码久久不卡| 亚洲a视频在线观看| 亚洲妇熟XXXX妇色黄| 亚洲日韩区在线电影| 亚洲乱码在线卡一卡二卡新区| 最新亚洲人成无码网站| 一级成人a做片免费| 3344免费播放观看视频| 在线免费观看污网站| 亚洲综合AV在线在线播放| 亚洲高清不卡视频| 国产精品久久久久久亚洲小说| 两个人看的www高清免费视频 | 九九精品成人免费国产片| 免费在线观看视频网站| 亚洲天堂中文字幕在线| 亚洲春色另类小说| 国产一级黄片儿免费看| 日本免费v片一二三区| 久久久亚洲欧洲日产国码aⅴ| 一级做a爱过程免费视| 午夜老司机免费视频| 亚洲精品欧洲精品| 人妻在线日韩免费视频| 亚洲国产精品自产在线播放| 亚洲一区二区三区高清不卡| 免费人成在线观看网站品爱网 | 亚洲视频在线免费| 亚洲高清无码综合性爱视频| 亚洲最大的成人网| 99久久精品日本一区二区免费| 亚洲短视频男人的影院| 国产免费AV片在线观看| 国产亚洲精品一品区99热| 久久国产乱子伦精品免费午夜 | 免费毛片在线播放| 亚洲人成色99999在线观看| 天天影院成人免费观看| 亚洲a级成人片在线观看| 免费视频爱爱太爽了| 亚洲色欲啪啪久久WWW综合网|