不過因為自己是在開發flash遊戲,所以就先找了一套Papervision3D來玩看看
PV3D網路上的資原其實中文的不多,也有人提到PV3D很久沒更新了,不過也許哪天還會再更新也說不一定
二話不說,直接貼原始碼這樣比較快~XD
以下原始碼部份轉載自http://milkmidi.blogspot.com/ 奶綠茶大的原始碼
/******************************************************************************************************* package{ //Flash類別 import flash.display.*; import flash.events.*; import flash.utils.getTimer; //PV3D類別 import org.papervision3d.cameras.Camera3D; import org.papervision3d.scenes.Scene3D; import org.papervision3d.objects.*; import org.papervision3d.materials.*; import org.papervision3d.objects.DisplayObject3D; //匯入材質色彩材質 import org.papervision3d.materials.ColorMaterial; //容器類別 import org.papervision3d.objects.primitives.Plane; //匯入BasicView類別,PV3D的整合型視窗類別,包含(scene)場景,(camera)攝影機,(Render)3D算圖引擎,(viewport3D)目前可視視窗 import org.papervision3d.view.BasicView; public class Pv3dTest1 extends MovieClip { //Pv3dTest1類別, 繼承MovieClip。 private var view:BasicView; /** * 宣告view變數為BasicView物件。 * BasicView是繼承Sprite物件,可被加入至顯示物件容器裡。 */ /** * 建構函式 */ public function Pv3dTest1():void{ //執行PV3D baseView初始化 init3D(); //執行PV3D物件初始化 init3DObject(); } /** *init3D函式,建構BasicView物件、設定Camera參數 */ private function init3D():void{ /** * 建構BasicView物件 * 參數值(viewport寬度, viewport高度, 是否自動對齊場景中間, 是否開啟滑鼠感應功能,camera類別) * PV3D的Camera有二種, * Target:目標Camera,不論鏡頭怎麼移動,永遠看著目標點。 * Free:自由Camera,可以任意的移動和旋轉鏡頭。 * viewport寬度和viewport高度設定為0的話,表示寬高是跟著整個場景的大小。 */ view = new BasicView(0, 0, true, true, "Target"); /** * 設定攝影機Y坐標 */ view.camera.y = 100; //將view加入至目前的顯示物件容器 this.addChild(view); //監聽ENTER_FRAME事件,PV3D是靠ENTER_FRAME事件作3D算圖計算 this.addEventListener(Event.ENTER_FRAME, onEventRender3D); } /** *init3DObject函式,用來建立PV3D物件、材質及偵聽事件 */ private function init3DObject():void{ //建立色彩材質 var colorMat:ColorMaterial = new ColorMaterial(0x223344); //建立Plane平面物件 for (var i:int = 0; i < 5; i++) { /** * 建立Plane平面物件 * 參數說明:Plane(色彩材質,寬,高) */ var plane:Plane = new Plane(colorMat, 200, 200); plane.x = (i - 2) * 250; //將物件加入場景 view.scene.addChild(plane); } } /** *onEventRender3D函式,偵聽影格事件 */ private function onEventRender3D(e:Event):void { //將攝影機X坐標左右擺動 view.camera.x = Math.sin(getTimer() / 1000) * 500; //Render view物件 view.singleRender(); } } }
沒有留言:
張貼留言