Sandy引擎學習筆記: 立體效果初試

來源:互聯網
上載者:User

 

 

 

經過一個上午的學習,感覺到這個sandy 發布的as3.0 真的很強大,看了官方一些介紹,把它做了出來

 

  1. package 
  2. {
  3.     import flash.display.Sprite;
  4.     import flash.events.*;
  5.     import sandy.core.Scene3D;
  6.     import sandy.core.scenegraph.*;
  7.     import sandy.primitive.*;
  8.     import sandy.core.data.*;
  9.     import sandy.materials.*;
  10.     import sandy.materials.attributes.*;
  11.     import flash.display.BitmapData;
  12.     import flash.display.Bitmap;
  13.     import flash.ui.Keyboard;
  14.     public class DD extends Sprite
  15.     {
  16.         private var scence:Scene3D;
  17.         private var camera:Camera3D;
  18.         private var box:Box;
  19.         private var rot:int=45;
  20.         private var img:Mypic;
  21.         private var bitmap:Bitmap;
  22.         private var up:Boolean;
  23.         private var down:Boolean;
  24.         private var left:Boolean;
  25.         private var right:Boolean;
  26.         public function DD()
  27.         {
  28.             img=new Mypic(0,0);
  29.             bitmap=new Bitmap(img);
  30.             camera=new Camera3D(500,400);//建立一個攝影機
  31.             camera.z=-400;
  32.             var group:Group=createScence();
  33.             scence=new Scene3D("scene1",this,camera,group);//建立一個情境
  34.             scence.root.addChild(camera);
  35.             addEventListener(Event.ENTER_FRAME,Run);
  36.             stage.addEventListener(KeyboardEvent.KEY_DOWN,KeyDown);
  37.             stage.addEventListener(KeyboardEvent.KEY_UP,KeyUp);
  38.             stage.addEventListener(Event.ENTER_FRAME,Runing);
  39.         }
  40.         private function createScence():Group
  41.         {
  42.             //添加材質
  43.             //第一步,設定材質屬性
  44.             var materia:MaterialAttributes =new MaterialAttributes(
  45.             new LightAttributes(true,0.3),
  46.             new LineAttributes(1,0x2111BB,1)
  47.             );
  48.             //第二步,設定材質屬性
  49.             var material:Material = new ColorMaterial( 0xFFCC33, 1, materia );//顯示顏色材質屬性
  50.             var material2:Material = new BitmapMaterial(bitmap.bitmapData);//顯示顏色材質屬性
  51.             material.lightingEnable = true;
  52.             material.lightingEnable=true;
  53.             var app:Appearance = new Appearance( material);//指定材質給可視物體
  54.             var app2:Appearance = new Appearance( material2 );//指定材質給可視物體紋理貼圖
  55.             var g:Group=new Group();
  56.             box=new Box("mybox",100,100,100);
  57.             box.appearance = app;
  58.             box.appearance = app2;
  59.             g.addChild(box);
  60.             return g;
  61.         }
  62.         private function Run(event:Event):void
  63.         {
  64.             box.rotateX=rot;
  65.             box.rotateY=45;
  66.             rot+=1;
  67.             scence.render();//渲染情境
  68.         }
  69.         private function KeyDown(event:KeyboardEvent):void
  70.         {
  71.             switch (event.keyCode)
  72.             {
  73.                 case Keyboard.UP :
  74.                     up=true;
  75.                     break;
  76.                 case Keyboard.DOWN :
  77.                     down=true;
  78.                     break;
  79.                 case Keyboard.LEFT :
  80.                     left=true;
  81.                     break;
  82.                 case Keyboard.RIGHT :
  83.                     right=true;
  84.                     break;
  85.             }
  86.         }
  87.         private function KeyUp(event:KeyboardEvent):void
  88.         {
  89.             if (event.keyCode==Keyboard.UP)
  90.             {
  91.                 up=false;
  92.             } else if (event.keyCode==Keyboard.DOWN)
  93.             {
  94.                 down=false;
  95.             } else if (event.keyCode==Keyboard.LEFT)
  96.             {
  97.                 left=false;
  98.             } else if (event.keyCode==Keyboard.RIGHT)
  99.             {
  100.                 right=false;
  101.             } else
  102.             {
  103.             }
  104.         }
  105.         private function Runing(event:Event):void
  106.         {
  107.             if (up)
  108.             {
  109.                 camera.z+=8;
  110.                 //camera.scaleY+=4;
  111.             } else if (down)
  112.             {
  113.                 camera.z-=8;
  114.             } else if (left)
  115.             {
  116.                 camera.pan+=2;
  117.             } else if (right)
  118.             {
  119.                 camera.pan-=2;
  120.             } else
  121.             {
  122.             }
  123.         }
  124.     }
  125. }

 

感覺還不錯,把這個貼圖了一下,三維的效果都出來了,加上了攝影機,效果都不錯。

但是感覺到3d計算都很大,當我把這個東西放大的時候,cpu佔有率高出了很多,有興趣的人可以去官方網下載類庫,還有協助文檔。

 

這個玩意不是一個玩具,但是熱愛flash 的人都會把它記住

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.