如何在网格布局中对齐 "boxes"
How to align "boxes" in a grid layout
我有这个 "menu" 我正在通过 XML 在我的 .swf
中加载
这是我的代码:
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++;
}
这将使加载的每个 "menu" 彼此相邻(从左到右)。
假设我正在加载 30 "boxes",我需要的是像这样显示它们:
像这样的东西应该有用。基本上,每次 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 变量。
正如@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++;
}
我有这个 "menu" 我正在通过 XML 在我的 .swf
中加载这是我的代码:
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++;
}
这将使加载的每个 "menu" 彼此相邻(从左到右)。
假设我正在加载 30 "boxes",我需要的是像这样显示它们:
像这样的东西应该有用。基本上,每次 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 变量。
正如@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++;
}