<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久久久噜噜噜久久男同| 曰批免费视频播放在线看片二| 蜜桃精品免费久久久久影院| 亚洲精品9999久久久久无码| 无码高潮少妇毛多水多水免费| 中文字幕乱码亚洲精品一区| 在线免费不卡视频| 无套内射无矿码免费看黄| 亚洲高清偷拍一区二区三区| 国产男女爽爽爽免费视频 | 国产精品一区二区三区免费 | 久久国产精品国产自线拍免费| 毛茸茸bbw亚洲人| 免费精品久久天干天干| 亚洲无线电影官网| 999国内精品永久免费视频| 亚洲影视自拍揄拍愉拍| 韩国二级毛片免费播放| 日本高清免费中文在线看| 亚洲AV无码乱码国产麻豆穿越| 99在线观看精品免费99| 中文无码亚洲精品字幕| ZZIJZZIJ亚洲日本少妇JIZJIZ| 中文在线免费看视频| 亚洲人成网站18禁止久久影院 | 久久夜色精品国产亚洲av| 久久国产免费观看精品| 亚洲剧场午夜在线观看| 免费看国产曰批40分钟| 久久精品国产免费一区| 亚洲三级中文字幕| 亚洲国产精品自产在线播放| 国产va在线观看免费| 亚洲综合无码无在线观看| 中文字幕日韩亚洲| www.999精品视频观看免费| 一级女性全黄久久生活片免费 | 久久久亚洲精华液精华液精华液| 久久亚洲国产成人精品无码区|