代码如下:
package ex{ import flash.display.Sprite; import flash.events.Event; import com.zutils.ComboBox; import com.zutils.CompEvent; import org.papervision3d.view.Viewport3D; import org.papervision3d.render.BasicRenderEngine; import org.papervision3d.objects.primitives.Cube; import org.papervision3d.materials.utils.MaterialsList; import org.papervision3d.cameras.Camera3D; import org.papervision3d.materials.ColorMaterial; import org.papervision3d.scenes.Scene3D; public class Ex6 extends Sprite { private var viewport:Viewport3D; private var scene:Scene3D; private var camera:Camera3D; private var renderer:BasicRenderEngine; public function Ex6() { viewport = new Viewport3D(500,500); addChild(viewport); scene = new Scene3D(); camera = new Camera3D(); renderer = new BasicRenderEngine(); var ms:MaterialsList = new MaterialsList(); ms.addMaterial(new ColorMaterial(0xff0000),"top"); ms.addMaterial(new ColorMaterial(0x00ff00),"bottom"); ms.addMaterial(new ColorMaterial(0x0000ff),"left"); ms.addMaterial(new ColorMaterial(0xffff00),"right"); ms.addMaterial(new ColorMaterial(0xff00ff),"front"); ms.addMaterial(new ColorMaterial(0x00ffff),"back"); var rubik:Array=["ufl","uf","ufr","ur","ubr","ub","ubl","ul","u","fl","f","fr","r","br","b","bl","l","dfl","df","dfr","dr","dbr","db","dbl","dl","d"] for(var i:uint=0;i<rubik.length;i++){ var cube:Cube = new Cube(ms,100,100,100,1,1,1) if (rubik[i].indexOf("u")>=0) cube.y=105; if (rubik[i].indexOf("d")>=0) cube.y=-105; if (rubik[i].indexOf("r")>=0) cube.x=105; if (rubik[i].indexOf("l")>=0) cube.x=-105; if (rubik[i].indexOf("f")>=0) cube.z=105; if (rubik[i].indexOf("b")>=0) cube.z=-105; scene.addChild(cube, rubik[i]); } addEventListener(Event.ENTER_FRAME, enterFrameHandle); var cbxa:Array=[["顶正","y-s-a"],["顶逆","y-s-z"],["低正","y-d-a"],["低逆","y-d-z"], ["左正","x-s-a"],["左逆","x-s-z"],["右正","x-d-a"],["右逆","x-d-z"], ["前正","z-s-a"],["前逆","z-s-z"],["后正","z-d-a"],["后逆","z-d-z"]]; var cbx:ComboBox=new ComboBox(cbxa,true); addChild(cbx); cbx.addEventListener(CompEvent.ComboBoxImplementation,comboBoxImplementation); } private function comboBoxImplementation(e:CompEvent):void{ var a:Array=(ComboBox(e.item).select).split("-"); for (var item:String in scene.children) { var citem:Cube =Cube(scene.getChildByName(item)); citem["scale"]=1; var k:int=105 if (a[1]=="d") k=-105; if (citem[a[0]]==k){ if (a[2]=="z") citem["scale"]=0.8; } } } private function enterFrameHandle(e:Event):void{ Camera3D(camera).hover(0, viewport.containerSprite.mouseX/30, viewport.containerSprite.mouseY/30); renderer.renderScene(scene,camera,viewport); } } }
回复Comments
作者:
{commentrecontent}