![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Apr 2009
Сообщений: 78
|
Мне жутко стыдно спрашивать такие банальные вещи, но толи от того что уже поздно и голова не соображает, толи еще по каким то причинам никак не могу понять, как правильно решить такую задачу:
- есть контейнер, в котором друг на друга навалены чайлды (в моем случии иконки, все с одинаковой длиной и шириной). нужно перестроить их в сетку. Как это сделать то? Я так думаю нужно сначала циклом пройтись по контейнеру, собрать их все в массив, а потом этот массив както через пару for-лупов отстроить в виде сетки. Если не трудно, киньте плз код. Еще раз сори за банальные вопросы ![]() |
|
|||||
|
Регистрация: Jun 2006
Сообщений: 400
|
Все правильно понимаете. Можно так как вы написали. Правда можно не собирать их в массив и цикл сделать один.
1) Задайте начальную позицию. 2) Делаете цикл по всем элементам. 3) На каждой итерации устанавливайте текущему элементу текущую позицию. 4) На каждой итерации меняйте в конце итерации текущие координаты, что бы элементы не накладывались друг на друга. Что бы строку менять следите за счетчиком. Если,например, у вас 5 элементов в строке, то каждые пять итераций скидывайте значение текущей позиции по x на ноль. А значение y увеличивайте на высоту элемента плюс отступ. |
|
|||||
|
Регистрация: Jul 2006
Сообщений: 170
|
вот:
package { import flash.display.Sprite; public class Main extends Sprite { public static const H_SPACE:Number = 1; //промежуток между объектами по горизонтали public static const V_SPACE:Number = 1; //промежуток между объектами по вертикали public static const NUM_OF_H_SPRITE:Number = 10; //кол-во объектов по горизонтали public static const NUM_OF_V_SPRITE:Number = 10; //кол-во объектов по вертикали public static const SORT_MODE:Number = 1 // 0 or 1; 1 = horizontall sort, 0 = verticall sort public function Main() { var spriteArray:Array = []; var countOfSprite:uint = 30; var sprite:Sprite; var i:uint = 0; //Create sprite for (i; i<countOfSprite; i++) { sprite = new Sprite(); sprite.graphics.beginFill(0); sprite.graphics.drawRect(0, 0, 10, 5); sprite.graphics.endFill(); spriteArray.push(sprite); } i = 0; for(i; i<countOfSprite; i++) { sprite = spriteArray[i] as Sprite; if(SORT_MODE) { sprite.x = i % NUM_OF_H_SPRITE * (sprite.width + H_SPACE); sprite.y = Math.floor(i/NUM_OF_H_SPRITE) * (sprite.height + V_SPACE); }else{ sprite.x = Math.floor(i/NUM_OF_V_SPRITE) * (sprite.width + H_SPACE); sprite.y = i % NUM_OF_V_SPRITE * (sprite.height + V_SPACE); } addChild(sprite); } } } } |
|
|||||
private static const ICON_WIDTH : uint = 90; private static const ICON_HEIGHT : uint = 90; private static const COLUMNS_COUNT : uint = 5; var childsCount : uint = iconsContainer.numChildren; for (var i : uint = 0; i < childsCount; i++) { var child : DisplayObject = itemsContainer.getChildAt(i); child.x = (i % COLUMNS_COUNT) * ITEM_WIDTH; child.y = uint(i / COLUMNS_COUNT) * ITEM_HEIGHT; } |
|
|||||
|
Регистрация: Apr 2009
Сообщений: 78
|
Спасибо друзья, разобрался
|
![]() |
![]() |
Часовой пояс GMT +4, время: 20:56. |
|
|
« Предыдущая тема | Следующая тема » |
|
|