[papervision3d2] 魔方

      做生活 2008-6-30 1:14

代码如下:
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);
		} 
	}
}
标签集:TAGS:as3 example Flash greatwhite
回复Comments() 点击Count()

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}