Table Engine - это небольшая библиотека классов (на самом деле это всего два класса) на ActionScript 3.0 от Garry Lachman, которая предназначена для удобного и быстрого создания таблиц на основе DisplayObject-ов (про список отображения смотрите пост «Список отображения в ActionScript 3.0»).
Итак, рассмотрим, как это работает...
Для начала нам надо создать то, что будет заполнять нашу будущую таблицу. Как уже упоминалось выше, для заполнения таблицы надо использовать объекты классов, наследующих от класса DisplayObject. То есть содержимым ячеек таблицы могут быть объекты классов MovieClip, Sprite и т.д.. Для собственного удобства я создал в Adobe Flash CS5.5 четыре класса (ImageCont_1, ImageCont_2, BoxCont и TextCont), которые расширяют класс MovieClip. В Adobe Flash это делается следующим образом:
- рисуем на рабочем столе программы всё, что душе угодно;
- выделяем ранее нарисованное и жмём кнопку F8;
- появляется окно «Конвертировать в символ» и в этом окне указываем тип MovieClip, а также имя нашего будущего класса (имя класса должно быть на английском языке и начинаться с большой буквы);
- в этом же окне устанавливаем галочку у «Экспортировать для ActionScript» (при этом название мувика автоматически вставляется в поле названия класса);
- теперь пользовательский класс создан и его можно использовать.
Отлично. У нас уже есть содержимое для нашей таблицы. Переходим к созданию самой таблицы (сама библиотека классов Table Engine прилагается к исходникам, ссылка на которые в конце поста).
Код ActionScript 3.0:
/*
подключение классов
*/
import layout.Engines.*;
/*
создание таблицы
*/
var table:TableEngine = new TableEngine(2,TableEngine.DIRECTION_RTL);
/*
добавление таблицы в список отображения
*/
addChild(table);
/*
позиционирование таблицы на сцене флеш-ролика
*/
table.x = 75;
table.y = 50;
/*
добавляем два поля в первый ряд таблицы
*/
table.AddElement(0, table.GetLength(0), new TableEngineItem(new ImageCont_1()));
table.AddElement(1, table.GetLength(1), new TableEngineItem(new BoxCont()));
/*
добавляем два поля во второй ряд таблицы
*/
table.AddElement(0, table.GetLength(0), new TableEngineItem(new TextCont()));
table.AddElement(1, table.GetLength(1), new TableEngineItem(new ImageCont_2()));
/*
отрисовка таблицы
*/
table.Render();
Результат будет следующим:
Таким образом, мы создали таблицу 2X2. Впрочем, ряд моментов здесь нуждаются в пояснениях...
Класс TableEngine, как несложно догадаться, создаёт саму таблицу. Он принимает два параметра:
1.) Количество ячеек в каждом ряду таблицы.
2.) Второй параметр отвечает за выравнивание содержимого ячейки таблицы. Может принимать следующие значения:
DIRECTION_LTR - выравнивание по левому верхнему углу ячейки;
DIRECTION_RTL - выравнивание по правому верхнему углу ячейки (как в приведённом выше примере);
DIRECTION_CENTER - выравнивание по центру.
С помощью метода AddElement() в таблицу добавляются новые ячейки. У AddElement() три параметра:
1.) Номер ячейки (начиная с 0).
2.) Номер ряда (начиная с 0).
3.) Добавляемый в данную ячейку объект.
На этом всё. Исходник (под Adobe Flash CS5.5) и саму библиотеку классов Table Engine скачать можно по данной ссылке.