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 Basic09_ShadingColorMaterial extends Sprite { private var view:View3D; private var sp:Sphere; private var mat:ShadingColorMaterial; private var changed:Boolean = true; public function Basic09_ShadingColorMaterial() { view = new View3D(); view.x = 250; view.y = 100; addChild(view); var l:DirectionalLight3D = new DirectionalLight3D(); view.scene.addChild(l); l.y = 500; l.x = -300; l.z = -200; // add spheres that increase in complexity for(var i:uint = 1; i<11; i++){ sp = new Sphere({radius:45,segmentsW:i*2,segmentsH:i*2}); sp.x = (i*50)-280; i%2 == 0 ? sp.y = -50 : sp.y = 50; sp.material = new ShadingColorMaterial(0xffffff); view.scene.addChild(sp); sp.addEventListener(MouseEvent3D.MOUSE_DOWN,setColor); } this.addEventListener(Event.ENTER_FRAME,update); } private function update(e:Event):void { // only update if something was changed if(changed){ view.render(); changed = false; } } private function setColor(e:MouseEvent3D):void { // Change material to a new random colored material if(e.currentTarget is Sphere){ var sp:Sphere = e.currentTarget as Sphere; sp.material = new ShadingColorMaterial(); changed = true; } } } }