1. 程式人生 > >ActionScript 3.0 學習(十六) away3D學習1

ActionScript 3.0 學習(十六) away3D學習1

            下面幾期會發布away3d相關的一些基本內容,away3d的類庫是開源的可以在網上下載。本節介紹基本的用away3d繪製一個小球,程式碼如下:  
package
{
	import flash.display.Sprite;
	import flash.display.MovieClip;
	import away3d.containers.View3D;
	import away3d.containers.Scene3D;
	import away3d.cameras.Camera3D;
	import flash.events.Event;
	import away3d.materials.ColorMaterial;
	import away3d.primitives.SphereGeometry;
	import away3d.entities.Mesh;
	import away3d.lights.DirectionalLight;
	import away3d.materials.lightpickers.StaticLightPicker; 
	
	/**
	 * 建立away3d的3D世界 首先我們得了解away3d的幾個基本類 也是每次我們做的時候必須初始化的  View3D ,Scene3D ,Camera3D。這三個類我做下簡單的解釋 
     1   View3D 我們可以理解為一個窗子。就像我們站在屋外可以通過窗子看到屋內的傢俱。同理 如果同時有多扇窗子,我們就可以看到多個屋內環境。在AWAY3D裡面 我也可以通過建立多個View3D來看到這個3D世界。
     2 Scene3D  我還是拿屋子做比較。Scene3D就類似這個屋內這個空間。因為這個空間的存在。我們才能向裡面放置傢俱。
     3 Camera3D 這個就類似我們的眼睛。因為它我們才看到這個世界。我們改變Camera3D 的座標 遍可以從不同角度來觀看這個3D世界
	 * */
	public class Away3DLearn extends  Sprite {
		
		private var _view:View3D;
		
		private var _scene:Scene3D;
		
		private var _camera:Camera3D;
		
		private var _material:ColorMaterial;
		
		private var _sphere:SphereGeometry;
		
		private var _sphereMesh:Mesh;
		
		private var _dl:DirectionalLight;
		private var _dl2:DirectionalLight;
		
		private var _light:StaticLightPicker;
		
		public function Away3DLearn() 
		{
			_view=new View3D();
			addChild(_view);
			
			_scene=new Scene3D();
			_view.scene=_scene;   
			_camera=new Camera3D();
			_view.camera=_camera;
			_material=new ColorMaterial(0xffffff);
			_sphere=new SphereGeometry(100,32,32);
			_sphereMesh=new Mesh(_sphere,_material);
			_view.scene.addChild(_sphereMesh);
			
			_dl=new DirectionalLight();
			_dl2=new DirectionalLight(-1,-1,1);
			_dl2.ambient=.1
			_light=new StaticLightPicker([_dl2]);
			
			_sphereMesh.material.lightPicker=_light;
			
			_view.scene.addChild(_dl);
			this.addEventListener(Event.ENTER_FRAME,enterFrameFunction)
		}
		
		private function enterFrameFunction(evt:Event):void
		{
			_view.render();
		}
	}
}