很多时候我们需要对一组显示对象做一个矩阵的排列,如果我们把这些显示对象放在一个数组或者Vector中那么就可以利用索引编号来进行计算每个对象应该处于的位置。
这里简单介绍二维的矩阵排列算法,很简单,写下来只是做个记录:
const columnNum=10;//每一行放的元素个数 for(var i:int=0;i<_list.length;i++) { var x:Number;//定义横向位置 var y:Number;//定义纵向位置 var j:int=Math.floor(i/columnNum); switch (j) { case 0: x= offsetX + intervalX * i; break; case 0: x= offsetX + intervalX * (i-columnNum); break; case 0: x= offsetX + intervalX * (i- 2 *columnNum); break; //........... } y = offsetY + intervalY * j; }
三维的情况类似,只不过在其中加上另一纬度的类似于上述代码总横向位置的判断:
const xNum=10;//每一行放的元素个数 const yNum = 8; 每一列上放的元素个数 for(var i:int=0;i<_list.length;i++) { var x:Number;//定义x轴位置 var y:Number;//定义y轴位置 var z:Number;//定义z轴位置 var j:int=Math.floor(i/xNum); var k:int = Math.floor(i/(xNum*yNum)); switch (j) { case 0: x= offsetX + intervalX * i; break; case 0: x= offsetX + intervalX * (i-xNum); break; case 0: x= offsetX + intervalX * (i- 2 *xNum); break; } y = offsetY + intervalY * j; switch (k) { case 0: z= offsetZ+ intervalZ * i; break; case 0: z= offsetZ + intervalZ * (i-xNum * yNum); break; case 0: z= offsetZ + intervalZ * (i- 2 *xNum * yNum); break; //.......... } }