|
|
Строка 1: |
Строка 1: |
− | == Лейауты и данные == | + | <source lang="xml"> |
− | | + | <screens> |
− | === Лейауты ===
| + | <sc id="1" nm="Меню"> <!-- Экран (sreen) --> |
− | | + | <st id="1" w="800" h="300" x="0" y="0" nm="Кнопки" kn=""> <!-- Сцена (stage) с перечнем объектов --> |
− | {| class="wikitable sortable" style="float:right; text-align: center; width: 50%"
| + | <ob id="1" name="Фон" w="640" h="320" x="0" y="0" z="0" al="1" res="24"/> |
− | |-
| + | <!-- ... --> |
− | !w || h || w/h || 1024/w || Устройство | + | </st> |
− | |-
| + | <st> |
− | |480 || 320 || 1.50 || 2.13 || iphone
| + | </st> |
− | |-
| + | </sc> |
− | |480 || 320 || 1.50 || 2.13 || android старые
| + | <!-- ... --> |
− | |-
| + | </screens> |
− | |800 || 480 || 1.67 || 1.28 || android типично
| + | </source> |
− | |-
| |
− | |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 и горизонтальную ориентацию. Тогда основная подстройка лейаутов происходит для положения и размера списков предметов, размера (и возможно различной графики) интерфейсных элементов и т.п.
| |
− | | |
− | === Экраны - сцены - объекты === | |
− | | |
− | [[File:EditorHiddenData.png|right]]
| |
− | Каждый лейаут состоит из набора экранов.
| |
− | Каждый экран содержит список сцен. Сцена состоит из объектов.
| |
− | Лейаутов может быть 1-6. Экранов: 1-1000. Сцен на экране: 1-10. Объектов на сцене: 1-1000.
| |
− | | |
− | Экран является контейнером для сцен и его геометрические размеры одинаковы для всех экранов данного лейаута. Тем не менее экран обладает визуальными свойствами:
| |
− | * цвет (если фон на нем проявляется по alpha)
| |
− | * время жизни (для хидена с ограничением времени)
| |
− | Экраны объединяются логическими переходами (при помощи кнопок, таймера, ...)
| |
− | и являются основными блоками игры. Сцены на экране объединяют объекты в логические
| |
− | группы. Например, сцена интерфейсных элементов, сцена изображающая спрятанные объекты, сцена со списком того, что надо искать и т.д. Координаты объектов задаются относительно сцены. Поэтому перемещение
| |
− | сцены по экрану приводит к перемещению всех её объектов.
| |
− | | |
− | У сцены есть свойство stretch. Если оно активировано, графические объекты растягиваются
| |
− | по сцене (<small>Q: а если нет данных о размерах до обрезки?</small>).
| |
− | Дополнительно каждый лейаут может быть растянут как целое, но делает это вьювер.
| |
− | | |
− | Сцены и объекты на лейаутах могут оказаться в следующих ситуациях:
| |
− | * Сцена на всех лейаутах имеет одинаковое расположение объектов, но различные координаты на экране и различный масштаб (например, поисковая сцена).
| |
− | * Сцена и объекты на ней имеют различное положение (например, элементы интерфейса)
| |
− | * Разный состав объектов на сцене в разных лейаутах (например, "бревна" разного вида для растяжения экрана, отсутствие некоторой кнопки, разные графические ресурсы для объекта и т.д.).
| |
− | | |
− | === Редактор сцен === | |
− | | |
− | * Все типы лейаутов сразу заданы. Если нужно добавить лейаут в готовый проект, это осуществляется копированием уже существующего.
| |
− | * При создании нового экрана он дублируется на всех лейаутах с одним и тем-же id. В дальнейшем с данного лейаута экран может быть удален, при этом диалоговое окно переспрашивает: "Удалить на всех лейаутах или только на данном?".
| |
− | * При добавлении сцены, она добавляется на экраны всех лейаутов, где есть экран с данным id. Все такие сцены получают одинаковое id, но имеют, вообще говоря, различные свойства (координаты и т.п.). Удаление осуществляется аналогично удалению экрана.
| |
− | * При добавлении объекта на сцену он добавляется на сцены всех лейаутов, если id сцены совпадает с id текущей. Удаление - как выше.
| |
− | | |
− | У каждой сцены и объекта есть целочисленное свойство "clone" ("клон").
| |
− | С его помощью происходит объединение свойств сцен или объектов в группы клонов.
| |
− | Изменение свойства объекта автоматически приведет
| |
− | к изменению на всех лейаутах этого же свойства у всех объектов с данным id и номером клона.
| |
− | При создании у всех сцен и объектов устанавливается по умолчанию clone=1.
| |
− | У данной сцены на различных лейаутах clone может быть разным (разное положение на экране),
| |
− | а у их объектов одинаковые (одинаковое положение относительно сцены).
| |
− | Сцена или объект с clone=0 полностью отвязаны от всех остальных сцен и объектов.
| |
− | Значения clone=1,2,... определяют группы объектов с одинаковыми свойствами (координатами, размерами и т.п.).
| |
− | <blockquote> | |
− | Таким образом, с точки зрения структуры данных все лейауты и сущности на них отвязаны друг от друга.
| |
− | Свойства id и clone используются редактором для коллективного (id), но выборочного (clone) изменения
| |
− | свойств сущностей.
| |
− | </blockquote> | |
− | | |
− | Кроме этого существуют пакетные способы изменения свойств.
| |
− | Например, каждая сцена имеет интерпретируемый вьювером тип.
| |
− | В список предопределенных типов, пользователь может добавлять собственные типы.
| |
− | На данном лейауте можно потребовать установить координаты и/или размеры всех сцен данного типа на всех экранах. Например, решено сдвинуть поисковую сцену. Она двигается на данном экране и затем вызывается команда задать такие же свойства всем сценам данного типа (список отождествляемых свойств появляется в виде диалогового окна; свойства которые не надо отождествлять - убираются снятием галочки).
| |