flash 与3D笔记 图片墙(1)

               

一: 方形的图片墙     

    对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(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值