My:Abs

Материал из synset
Версия от 13:07, 10 сентября 2011; WikiSysop (обсуждение | вклад) (Экраны - сцены - объекты)
Перейти к: навигация, поиск

Лейауты и данные

Лейауты

w h w/h 1024/w Устройство
480 320 1.50 2.13 iphone
480 320 1.50 2.13 android старые
800 480 1.67 1.28 android типично
800 480 1.67 1.28 android планшеты
854 480 1.78 1.20 android телефоны
960 640 1.50 1.07 iphone
960 540 1.78 1.07 android новые
1024 768 1.33 1.00 ipad
1024 600 1.71 1.00 android планшеты
1024 768 1.33 1.00 android планшеты
1280 800 1.60 0.80 android планшеты

Лейауты являются различными вариантами геометрических размеров экранов устройств. Возможны ситуации, когда лейауты отличаются:

  • шириной и/или высотой
  • только ориентацией (вертикальная-горизонтальная)
  • масштабом (ширина и высота отличается в 2 раза)

Целесообразно покрывать 3 базовых отношения w/h:

1.33 1024x768 других нет
1.50 960x640, 480x320 2-кратная разница
1.67 800x480, 960x540(-60), 854x480(-54), 1024x600(-24), 1280x800(-32)

Остальные добивать интерфейсными полосками ("бревнами") слева-справа или сверху-снизу. Полоска может быть одна (типа кепшен окна) с линком на сайт. Может быть и две (по бокам или сверху-снизу). Если ухудшения графики не происходит, то не охваченные лейауты получаются растягиванием ближайших по w/h базовых лейаутов. Таким образом, имеем 3 отношения плюс 2-е ориентации (они будут не всегда), что даёт от 3 до 6 лейаутов.

В процессе разработки дизайна необходимо стремиться к уменьшению количества графики. Например, для хиденов область поиска объектов должна иметь универсальное w/h и горизонтальную ориентацию. Тогда основная подстройка лейаутов происходит для положения и размера списков предметов, размера (и возможно различной графики) интерфейсных элементов и т.п.

Экраны - сцены - объекты

EditorHiddenData.png

Каждый лейаут состоит из набора экранов. Каждый экран содержит список сцен. Сцена состоит из объектов. Лейаутов может быть 1-6. Экранов: 1-1000. Сцен на экране: 1-10. Объектов на сцене: 1-1000.

Экран является контейнером для сцен и его геометрические размеры одинаковы для всех экранов данного лейаута. Тем не менее экран обладает визуальными свойствами:

  • цвет (если фон на нем проявляется по alpha)
  • время жизни (для хидена с ограничением времени)

Экраны объединяются логическими переходами (при помощи кнопок, таймера, ...) и являются основными блоками игры. Сцены на экране объединяют объекты в логические группы. Например, сцена интерфейсных элементов, сцена изображающая спрятанные объекты, сцена со списком того, что надо искать и т.д. Координаты объектов задаются относительно сцены. Поэтому перемещение сцены по экрану приводит к перемещению всех её объектов.

У сцены есть свойство stretch. Если оно активировано, графические объекты растягиваются по сцене (Q: а если нет данных о размерах до обрезки?). Дополнительно каждый лейаут может быть растянут как целое, но делает это вьювер.

Сцены и объекты на лейаутах могут оказаться в следующих ситуациях:

  • Сцена на всех лейаутах имеет одинаковое расположение объектов, но различные координаты на экране и различный масштаб (например, поисковая сцена).
  • Сцена и объекты на ней имеют различное положение (например, элементы интерфейса)
  • Разный состав объектов на сцене в разных лейаутах (например, "бревна" разного вида для растяжения экрана, отсутствие некоторой кнопки, разные графические ресурсы для объекта и т.д.).

Редактор сцен

  • Все типы лейаутов сразу заданы. Если нужно добавить лейаут в готовый проект, это осуществляется копированием уже существующего.
  • При создании нового экрана он дублируется на всех лейаутах с одним и тем-же id. В дальнейшем с данного лейаута экран может быть удален, при этом диалоговое окно переспрашивает: "Удалить на всех лейаутах или только на данном?".
  • При добавлении сцены, она добавляется на экраны всех лейаутов, где есть экран с данным id. Все такие сцены получают одинаковое id, но имеют, вообще говоря, различные свойства (координаты и т.п.). Удаление осуществляется аналогично удалению экрана.
  • При добавлении объекта на сцену он добавляется на сцены всех лейаутов, если id сцены совпадает с id текущей. Удаление - как выше.

У каждой сцены и объекта есть целочисленное свойство "clone" ("клон"). С его помощью происходит объединение свойств сцен или объектов в группы клонов. Изменение свойства объекта автоматически приведет к изменению на всех лейаутах этого же свойства у всех объектов с данным id и номером клона. При создании у всех сцен и объектов параметр clone=1. У данной сцены на различных лейаутах clone может быть разным (разное положение на экране), а их объектов одинаковые (одинаковое положение относительно сцены). Сцена или объект с clone=0 полностью отвязаны от всех остальных сцен и объектов. Значения clone=1,2,... определяют группы объектов с одинаковыми свойствами (координатами, размерами и т.п.).

Таким образом, с точки зрения структуры данных все лейауты и сущности на них отвязаны друг от друга. Свойства id и clone используются редактором для коллективного, но выборочного изменения свойств сущностей.

Каждая сцена имеет интерпретируемый вьювером тип. В список предопределенных типов, пользователь может добавлять собственные типы. На данном лейауте можно потребовать установить координаты и/или размеры всех сцен данного типа на всех экранах. Например, решено сдвинуть поисковую сцену. Она двигается на данном экране и затем вызывается команда задать такие же свойства всем сценам данного типа (список отождествляемых свойств появляется в виде диалогового окна; свойства которые не надо отождествлять - убираются снятием галочки).