Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Создание клеточной доски (http://www.flasher.ru/forum/showthread.php?t=138521)

armastus 09.04.2010 19:23

Создание клеточной доски
 
Доброго времени суток. Вопрос: как создать карту (размером 64*64 одинаковых клеток, к примеру) используя ActionScript 3.0? Чтобы в каждой клетке возможно было размещать какой-либо объект. Буду благодарен за любой намёк на реализацию такой вещи. Спасибо.

arkadattx 09.04.2010 19:27

Хотите намек? Пожалуйста: циклы и остаток от деления на размер строки.
И в шахматах 8*8, а не 64*64, но так, между прочим

armastus 09.04.2010 20:50

arkadattx спасибо за намёк, по-поводу шахмат, я не говорил, что это шахматная доска! Кто ещё какие варианты скажет?

arkadattx 09.04.2010 21:00

наверное давно в шахматы не играл :)
а чем этот вариант не устраивает
dataGrid еще возможен, но я с ним еще не работал...

Zik. 09.04.2010 22:08

ну вот еще парочка намеков: for, addChild, array

inozemcev 10.04.2010 13:20

это классический двумерный массив

arr[i][j] где i это ряд а j это столбец

armastus 11.04.2010 00:34

Спасибо большое, буду делать!

Xero201 12.04.2010 15:07

Вот подробное руководство:
Создай класс "Ячейка" наследуя от визуального класса (extends Sprite). Графическую часть можно либо нарисовать динамически в graphics, либо прикрепить к классу из редактора (в свойстве linked (CS3) или properties (CS4))
Создай массив, в котором будут храниться все созданные тобой ячейки, чтобы потом с помощью него обращаться к ним.
Код AS3:

Var массивЯчеек:Array = new Array();

Потом выбери начальную позицию первой ячейки.
Потом создай два цикла for. В первом перебирай строки, во втором столбцы. Чтобы получить двумерный массив, при переборе строк пиши
Код AS3:

массивЯчеек[строка]=new Array();

Там, где перебираешь столбцы, создавай переменную класса «Ячейка»
Код AS3:

var ячейка=new Ячейка();

Для того, чтобы того чтобы установить x, анализируй второй for и ширину ячейки, для y – первый for, и высоту ячейки. (по намеку arkadattx, можно и один for, но тогда нужно парится с деленим (/ и %)).
Добавляй ячейку в список отображения (addChild(ячейка)) и в массив (массивЯчеек[строка].push(ячейка)).
Чтобы поместить яблоко в 3-ую ячейку 4-го столбца, пиши
Код AS3:

массивЯчеек[3][4].addChild(яблоко)

Уф.. как-то так)

armastus 14.04.2010 03:27

Ого, спасибо, буду ковыряться, разбираться!

Wolsh 14.04.2010 11:16

Фрагмент из класса шахматной доски, которую я когда-то делал.

Код AS3:

_deck = new Sprite();
addChild(_deck);
for (var v:uint = 0; v < 8; v++)
{
        for (var h:uint = 0; h < 8; h++)
        {
                var cellColor:uint = (v + h) % 2 ? _darkColor : _lightColor;
                var cell:Cell = new Cell(cellColor);
                _deck.addChild(cell);
                cell.x = h * cell.width;
                cell.y = v * cell.height;
        }
}



Часовой пояс GMT +4, время: 00:04.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.