package { import away3d.containers.ObjectContainer3D; import away3d.containers.View3D; import away3d.core.geom.Plane3D; import away3d.events.MouseEvent3D; import away3d.materials.BitmapFileMaterial; import away3d.materials.BitmapMaterial; import away3d.materials.WireColorMaterial; import away3d.primitives.Cube; import away3d.primitives.Plane; import flash.display.Sprite; import flash.events.Event; import flash.net.*; import flash.system.Security; public class jiudian extends Sprite { private var cube:Cube; private var left:Plane; private var right:Plane; private var top:Plane; private var bottom:Plane; private var front:Plane; private var back:Plane; private var view:View3D; private var oc:ObjectContainer3D; public function jiudian() { init(); } private function init():void { view = new View3D({x:250,y:200}); this.addChild(view); cube = new Cube({width:300,height:300,depth:300}); oc = new ObjectContainer3D(); var mat:BitmapFileMaterial = new BitmapFileMaterial("080826170294768.jpg"); //左面 left = new Plane({width:200,height:200}); left.name = "left"; left.material = mat; left.x = -100; left.y = 0; left.z = 0; left.rotationZ = 90; //右面 right = new Plane({width:200,height:200}); right.name = "right"; right.material = mat; right.x = 100; right.y = 0; right.z = 0; right.rotationZ = -90; //上面 top = new Plane({width:200,height:200}); top.name = "top"; top.material = mat; top.x = 0; top.y = 100; top.z = 0; //下面 bottom = new Plane({width:200,height:200}); bottom.name = "bottom"; bottom.material = mat; bottom.x = 0; bottom.y = -100; bottom.z = 0; bottom.rotationX = 180; //前面 front = new Plane({width:200,height:200}); front.name = "front"; front.material = mat; front.x = 0; front.y = 0; front.z = 100; front.rotationX = -90; //后面 back = new Plane({width:200,height:200}); back.name = "back"; back.material = mat; back.x = 0; back.y = 0; back.z = -100; back.rotationX = 90; oc.addChild(left); oc.addChild(right); oc.addChild(top); oc.addChild(bottom); oc.addChild(front); oc.addChild(back); view.scene.addChild(oc); left.addEventListener(MouseEvent3D.MOUSE_DOWN, mouseDown); right.addEventListener(MouseEvent3D.MOUSE_DOWN, mouseDown); top.addEventListener(MouseEvent3D.MOUSE_DOWN, mouseDown); bottom.addEventListener(MouseEvent3D.MOUSE_DOWN, mouseDown); front.addEventListener(MouseEvent3D.MOUSE_DOWN, mouseDown); back.addEventListener(MouseEvent3D.MOUSE_DOWN, mouseDown); oc.addEventListener(MouseEvent3D.MOUSE_OVER, onMouseOver); oc.addEventListener(MouseEvent3D.MOUSE_OUT, onMouseOut); this.addEventListener(Event.ENTER_FRAME, enterFrame); } private function enterFrame(e:Event):void { oc.rotationX += Math.random()*2; oc.rotationY += Math.random()*3; oc.rotationZ += Math.random()*4; view.render(); } private function mouseDown(e:MouseEvent3D):void { var newUrl:URLRequest; switch(e.object.name) { case "left": newUrl = new URLRequest("http://www.baidu.com"); trace("left"); break; case "right": newUrl = new URLRequest("http://www.google.com"); trace("right"); break; case "top": newUrl = new URLRequest("http://www.sina.com"); trace("top"); break; case "bottom": newUrl = new URLRequest("http://www.tudou.com"); trace("bottom"); break; case "front": newUrl = new URLRequest("http://www.youku.com"); trace("front"); break; case "back": newUrl = new URLRequest("http://www.mytrpg.com"); trace("back"); break; } var _fangshi:String="_blank"; navigateToURL(newUrl,_fangshi); } private function onMouseOver(e:MouseEvent3D):void { this.removeEventListener(Event.ENTER_FRAME, enterFrame); } private function onMouseOut(e:MouseEvent3D):void { this.addEventListener(Event.ENTER_FRAME, enterFrame); } } } 网上关于这个效果的介绍真的很少。 就是有提过把plane组合起来的。可是很简单。 自己研究了半天,终于搞出来了。赶紧记下来。