摘要:根据传入不同的参数,智能的显示蜂窝式布局,效果如下图:
制作步骤:
1、在库中建一个mc 绑定名称为“myMC”
2、建一个文档类,代码如下:
1 package 2 { 3 import flash.display.Sprite; 4 5 /** 6 * @author chb 7 * @data 2015-8-26 8 * @email [email protected] 9 */ 10 11 public class ReseauLayout extends Sprite 12 { 13 private var container:Sprite; 14 public function ReseauLayout () 15 { 16 init (); 17 } 18 19 private function init ():void 20 { 21 container = new Sprite(); 22 this.addChild (container); 23 container.x = stage.stageWidth * 0.5; 24 container.y = 200; 25 setLayout (15,175,3); 26 } 27 /* 28 *@param _count 六边形的个数 29 *@param itemW 六边形宽 30 *@param gap 间隔 31 *@param type 蜂窝的类型,一组多少个六边形 32 *@param num 每一组中的编号 33 * 34 */ 35 36 private function setLayout (_count:Number,itemW:Number,gap:Number,type:Number = 3,num:Number = 1):void 37 { 38 if (_count > 10) 39 { 40 type = 5; 41 } 42 43 var itemY:Number = itemW * Math.cos(30*Math.PI/180);//表示每两个六边形之间的y轴差距 44 var itemX:Number = itemW * 0.5;//表示每两个六边形之间的x轴差距 45 46 for (var i:Number = 0; i<_count; i++) 47 { 48 var item:Sprite = new myMC();//六边形单元,库里面绑定 49 container.addChild (item); 50 var groupNum:Number = int(i/type); 51 if (num == 1) 52 { 53 item.x = groupNum*(itemW+gap); 54 item.y = itemY * 2; 55 } 56 else if (num == 2) 57 { 58 59 item.x = itemW/2+groupNum*(itemW+gap); 60 item.y = itemY * 2 - itemY - gap; 61 62 } 63 else if (num == 3) 64 { 65 item.x = itemW/2+groupNum*(itemW+gap); 66 item.y = itemY * 2 + itemY + gap; 67 } 68 else if (num == 4) 69 { 70 item.x = itemW/2+groupNum*(itemW+gap) + itemW/2 + gap; 71 item.y = itemY * 2 - itemY * 2 - gap*2; 72 } 73 else if (num == 5) 74 { 75 item.x = itemW/2+groupNum*(itemW+3) + itemW/2 + gap; 76 item.y = itemY * 2 + itemY * 2 + gap*2; 77 } 78 num++; 79 if (num == (type+1)) 80 { 81 num = 1; 82 } 83 } 84 } 85 86 } 87 88 }
时间: 2024-11-05 18:33:11