0

我试图找出一种优雅的方式来在网格中显示一定数量的项目。我觉得答案部分在于模数,但它比这更复杂一些。我知道如何根据一组列数在网格中布置项目。像这样的东西:

for (var j=0;j<numFiles;j++){
clip.x = clip.width * (j % cols);
clip.y = clip.width * int(j / cols);
}

但我想要做的是设置,如果只有一个项目(j = 0),图像覆盖整个可用区域(stage.Width 和 stage.Height,或者为简单起见,1000px 和 500px)。如果有 2 个项目,则应该有 2 列,图像占据舞台宽度的一半和所有高度(500x500),3 个项目 - 3 列(300x500),4 个项目 - 2 列和 2 行( 500x250)等等,保持平衡的网格布局,但减少项目的尺寸并以某种逻辑和平衡的方式增加行数。

必须有一种方法可以在数学上做到这一点,但我还没有遇到过,而且我自己似乎无法掌握它。如果有人有想法,我很想听听。我在 Flash AS3 中执行此操作,但任何示例都会很有用。

4

1 回答 1

2

这是一个棘手的问题:)

@ThatSteveGuy 是对的;某些文件计数可能效果不佳。

解决它的一种方法是使用树形图曼森算法。

此处提供了树形图的实现:http ://www.arpitonline.com/blog/downloads/treemap2/srcview/ (文章

不幸的是,它与 displayList 紧密耦合,有些事情有点奇怪,(比如在具有不同偏移量的多个 displayObjects 中渲染多个矩形)但它可以完成工作:)

这里有一个人工砌筑的代码胚胎:Programmatic Masonry / Space-FINding Layout in Actionscript

于 2011-03-04T14:14:23.527 回答