<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
    主站蜘蛛池模板: 在线播放高清国语自产拍免费| 亚洲美女视频免费| 一区二区三区免费看| yellow免费网站| 亚洲国产精品日韩| 久久精品国产亚洲av成人| 亚洲精品美女久久久久9999| 亚洲精品国产综合久久久久紧| 好吊色永久免费视频大全| 免费黄色福利视频| 亚洲人成人无码网www国产| 亚洲国产精品成人精品软件| 久久国产精品免费| 亚洲国产精品高清久久久| 日韩国产欧美亚洲v片| 最近免费视频中文字幕大全| 亚洲av区一区二区三| 亚洲国产日韩精品| 免费精品99久久国产综合精品| 国产精品深夜福利免费观看| 亚洲精品美女久久久久9999| 成人免费看吃奶视频网站| 亚洲婷婷在线视频| 国产精品免费小视频| 久久久免费观成人影院| 亚洲日韩在线视频| 国产精品冒白浆免费视频| jizz在线免费观看| 四虎永久免费地址在线观看| 最新亚洲卡一卡二卡三新区| 国产高清免费的视频| 久久国产乱子伦精品免费不卡| 久久亚洲国产成人精品无码区| 国产成人va亚洲电影| 无码永久免费AV网站| 91大神亚洲影视在线| 日本在线免费观看| 亚洲欧洲免费无码| 永久免费AV无码网站在线观看 | 亚洲av无码乱码在线观看野外 | 无码乱人伦一区二区亚洲|