модуль / сетка с элементами изменяющегося размера - PullRequest
0 голосов
/ 03 марта 2011

Я пытаюсь изобразить элегантный способ отображения определенного количества элементов в сетке. У меня есть ощущение, что ответ частично зависит от модуля, но это немного сложнее, чем это. Я знаю, как размещать элементы в сетке на основе заданного количества столбцов. Примерно так:

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, но любой пример будет полезен.

1 Ответ

2 голосов
/ 04 марта 2011

это сложная проблема:)

@ ThatSteveGuy прав; Некоторое количество файлов может работать не очень хорошо.

Один из способов ее решения - использовать алгоритм tree * или mansonry .

реализация древовидной карты доступна здесь: http://www.arpitonline.com/blog/downloads/treemap2/srcview/ ( статья )

к сожалению, он сильно связан с displayList, а некоторые вещи немного странные (например, рендеринг нескольких строк в нескольких displayObjects с различными смещениями), но он выполняет свою работу:)

здесь есть эмбрион кода для mansonry: Программный макет масонства / Space-FInding Layout в Actionscript

...