一: 方形的图片墙
对3D还是一点也不熟悉,东拿西拿才把这个拼合的图片墙拼起来了,但是涉及到很多细节方面比较多。特别是rotationX rotationY之后的偏移问题,对构建存在一点问题。初步有一种想法,是讲将下面的图形拼成一堵墙。通过flash本身的对xyz轴偏转,构成一堵墙。
如果每一张图片注册点位置都是中心点的。那么通过rotationX 偏转之后,在拼合之后会有一些差异,因此在对周边的进行位置偏移 迫使在rotationX 和rotationY的时候 会让他们看起来是拼合的盒子一样。
效果图如下:
//3d 容器类,用于z轴处理package{ import flash.display.*; import flash.geom.*; public class DisplayContainer3D extends Sprite { private var list:Array=[]; public function DisplayContainer3D () { } public function addList(obj:*):void { list.push(obj) } public function sortZ():void { list.sort(depthSort) for (var i:int=0; i<list.length; i++) { var myimage:* = list[i]; this.setChildIndex(myimage,i); } } private function depthSort(objA:DisplayObject,objB:DisplayObject):int { var posA:Vector3D = objA.transform.matrix3D.position; posA = this.transform.matrix3D.deltaTransformVector(posA); var posB:Vector3D = objB.transform.matrix3D.position; posB = this.transform.matrix3D.deltaTransformVector(posB); return posB.z-posA.z; } } }
//图片墙,写于2010年9月19日早上package { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.text.TextField; public class Main extends Sprite { private var contain:DisplayContainer3D=new DisplayContainer3D();//容器 private var n:int = 6; private var list:Array = []; public function Main() { init(); } private function init():void { this.root.transform.perspectiveProjection.fieldOfView = 60;//设置视野角度(0-180之间) addChild(contain); contain.x=stage.stageWidth/2; contain.y=stage.stageHeight/2; creatSprite(); addEventListener(Event.ENTER_FRAME,Run); } //通过n*n矩阵进行分布,通过判断来帅选他们是否实例化 private function creatSprite():void { var photo:Sprite; for (var i:int=0; i<n*n; i++) { if (i>n-1 && i<n*(n-1)) { if (i - n * int(i / n) == 0) { photo=new Sprite(); photo.graphics.lineStyle(0); photo.graphics.beginFill(0x00ff00); photo.graphics.drawRect(-25,-25,50,50); photo.graphics.endFill(); photo.x=(i%n)*50-25; photo.z = int(i / n) * 50; contain.addList(photo); photo.rotationY = -90; } if (Math.abs(i - n * int(i / n)) == n - 1) { photo=new Sprite(); photo.graphics.lineStyle(