away3D的11个球体的光影效果实例

/*在fb下新建as项目运行此实例*/
ay3D_Demo.as
package{
	import away3d.containers.View3D;
	import away3d.events.MouseEvent3D;
	import away3d.lights.DirectionalLight3D;
	import away3d.materials.ShadingColorMaterial;    //此类布置光影效果
	import away3d.primitives.Sphere;
	
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	
	[SWF(width="500",height="200", backgroundColor="#FFFFFF")]
	
	public class Away3D_Demo extends Sprite{
		private var view:View3D;
		private var sph:Sphere;
		private var mat:ShadingColorMaterial;
		private var changed:Boolean = true;
		
		public function Away3D_Demo(){
			view = new View3D();
			view.x = 250;
			view.y = 100;
			addChild(view);
			
			var srcLight:DirectionalLight3D = new DirectionalLight3D();
			view.scene.addChild(srcLight);
			srcLight.y = 500;
			srcLight.x = -300;
			srcLight.z = -200;
			for(var i:int = 1; i < 11; i++){
				sph = new Sphere({radius:45, segmentsW:i * 2, segmentsH:i * 2});
				sph.x = (i * 50) - 280;
				i % 2 == 0 ? sph.y = -50 : sph.y = 50;
				sph.material = new ShadingColorMaterial(0xFF0000);    //初始化每个球体的颜色
				view.scene.addChild(sph);
				sph.addEventListener(MouseEvent3D.MOUSE_DOWN, clickColor);
			}
			this.addEventListener(Event.ENTER_FRAME, update);
		}
		
		private function update(e:Event):void{
			if(changed){
				view.render();
				changed = false;
			}
		}
		
		private function clickColor(e:MouseEvent3D):void{
			if(e.currentTarget is Sphere){
				var sp:Sphere = e.currentTarget as Sphere;
				sp.material = new ShadingColorMaterial();
				changed = true;
			}
		}
		
	}
}

你可能感兴趣的:(Flash)