2011-03-03 60 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

相關問題