蜂窝式排列方式

根据传入不同的参数,智能的显示蜂窝式布局,效果如下图:

制作步骤:

1、在库中建一个mc 绑定名称为“myMC”  

2、建一个文档类,代码如下:

package 
{
	import flash.display.Sprite;

	/**
	 * @author chb
	 * @data 2015-8-26
	 * @email 645338868@qq.com
	 */

	public class ReseauLayout extends Sprite
	{
		private var container:Sprite;
		public function ReseauLayout ()
		{
			init ();
		}

		private function init ():void
		{
			container = new Sprite();
			this.addChild (container);
			container.x = stage.stageWidth * 0.5;
			container.y = 200;
			setLayout (15,175,3);
		}
		/*
		*@param    _count 六边形的个数
		*@param    itemW  六边形宽
		*@param    gap    间隔
		*@param    type   蜂窝的类型,一组多少个六边形
		*@param    num    每一组中的编号
		*
		*/

		private function setLayout (_count:Number,itemW:Number,gap:Number,type:Number = 3,num:Number = 1):void
		{
			if (_count > 10)
			{
				type = 5;
			}

			var itemY:Number = itemW * Math.cos(30*Math.PI/180);//表示每两个六边形之间的y轴差距
			var itemX:Number = itemW * 0.5;//表示每两个六边形之间的x轴差距

			for (var i:Number = 0; i<_count; i++)
			{
				var item:Sprite = new myMC();//六边形单元,库里面绑定
				container.addChild (item);
				var groupNum:Number = int(i/type);
				if (num == 1)
				{
					item.x = groupNum*(itemW+gap);
					item.y = itemY * 2;
				}
				else if (num == 2)
				{

					item.x = itemW/2+groupNum*(itemW+gap);
					item.y = itemY * 2 - itemY - gap;

				}
				else if (num == 3)
				{
					item.x = itemW/2+groupNum*(itemW+gap);
					item.y = itemY * 2 + itemY + gap;
				}
				else if (num == 4)
				{
					item.x = itemW/2+groupNum*(itemW+gap) + itemW/2 + gap;
					item.y = itemY * 2 - itemY * 2 - gap*2;
				}
				else if (num == 5)
				{
					item.x = itemW/2+groupNum*(itemW+3) + itemW/2 + gap;
					item.y = itemY * 2 + itemY * 2 + gap*2;
				}
				num++;
				if (num == (type+1))
				{
					num = 1;
				}
			}
		}

	}

}

  

 

posted @ 2015-08-27 10:24  hypo.chen  阅读(1157)  评论(0编辑  收藏  举报