2011-03-03 35 views
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中这样做,但任何示例都会有用。

+0

你会喜欢的东西17个项目吗?没有行/列的组合,不会让你留下一个不完美的矩形,这似乎是你在做什么。是一个不完美的矩形,是否有最大数量的列? – ThatSteveGuy

+0

它不需要完美 - 尽可能接近矩形。你可以指定最大的列数,但基本上它需要容纳未知数量的图像,例如,如果有100个图像,则列数可能会增加到10个,每个图像的大小可能会增加图像减少。 – mheavers

回答

2

这是一个棘手的问题:)

@ThatSteveGuy是对的;某些文件数可能无法正常工作。

解决问题的一种方法是使用treemapmansonry算法。

树形图的实现可以在这里找到:http://www.arpitonline.com/blog/downloads/treemap2/srcview/article

不幸的是,强烈耦合到显示列表,有些东西是有点不可思议,(如在各种偏移多的DisplayObject渲染mutilple rects),但它的工作:)

存在对砖混这里代码胚:Programmatic Masonry/Space-FInding Layout in Actionscript

+0

哇 - 这是相当激烈的 - 我不认为砌体是我正在做的 - 但它可以工作,我想解决我的问题 - 我希望一切都是相同的大小成比例,只是变化如果在网格中显示更多缩略图,则从一个项目到另一个项目的大小。但是,这绝对是一个很好的开始,谢谢。 – mheavers

相关问题