我这个小菜单"我在我的.swf
中通过XML加载这是我的代码:
for each(var datos: XML in xml.datos) {
var menuItem: MenuItem = new MenuItem();
menuItem.x = count * menuItem.height * 6;
menuItem.y = 0;
menuItem.menuText.text = datos.@causa;
menuItem.mouseChildren = false;
menuItem.addEventListener(MouseEvent.MOUSE_OVER, mouseOverItem);
menuItem.addEventListener(MouseEvent.MOUSE_OUT, mouseOutItem);
menuItem.addEventListener(MouseEvent.CLICK, itemClicked);
menuHolder.addChild(menuItem);
count++;
}
这将把每个"菜单"彼此相邻(从左到右)。
我们只是说我加载30"盒子"而我需要的是向他们展示:
答案 0 :(得分:2)
这样的事情应该有效。基本上,每当count
得到5时,它就会重置。由于您的x
值基于count
,因此它也会重置并从左侧重新开始。此外,您的yPos
将增加一些值(例如我选择了50),下一行将被该数量抵消。
var yPos: Number = 0;
for each(var datos: XML in xml.datos) {
var menuItem: MenuItem = new MenuItem();
menuItem.x = count * menuItem.height * 6;
menuItem.y = yPos;
menuItem.menuText.text = datos.@causa;
menuItem.mouseChildren = false;
menuItem.addEventListener(MouseEvent.MOUSE_OVER, mouseOverItem);
menuItem.addEventListener(MouseEvent.MOUSE_OUT, mouseOutItem);
menuItem.addEventListener(MouseEvent.CLICK, itemClicked);
menuHolder.addChild(menuItem);
count++;
if (count % 5 == 0) {
count = 0;
yPos += 50;
}
}
你也可以在没有条件和yPos var。
的情况下完成根据@DodgerThud的建议,我根据你的目标做了一些更合理的数学。
var margin: Number = 5;
var numPerRow: Number = 4;
for each(var datos: XML in xml.datos) {
var menuItem: MenuItem = new MenuItem();
menuItem.x = (count % numPerRow) * (menuItem.width + margin);
menuItem.y = Math.floor(count / numPerRow) * (menuItem.height + margin);
menuItem.menuText.text = datos.@causa;
menuItem.mouseChildren = false;
menuItem.addEventListener(MouseEvent.MOUSE_OVER, mouseOverItem);
menuItem.addEventListener(MouseEvent.MOUSE_OUT, mouseOutItem);
menuItem.addEventListener(MouseEvent.CLICK, itemClicked);
menuHolder.addChild(menuItem);
count++;
}