My:Abs — различия между версиями

Материал из synset
Перейти к: навигация, поиск
(Редактор сцен)
Строка 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>
 
 
 
Кроме этого существуют пакетные способы изменения свойств.
 
Например, каждая сцена имеет интерпретируемый вьювером тип.  
 
В список предопределенных типов, пользователь может добавлять собственные типы.
 
На данном лейауте можно потребовать установить координаты и/или размеры всех сцен данного типа на всех экранах. Например, решено сдвинуть поисковую сцену. Она двигается на данном экране и затем вызывается команда задать такие же свойства всем сценам данного типа (список отождествляемых свойств появляется в виде диалогового окна; свойства которые не надо отождествлять - убираются снятием галочки).
 

Версия 10:23, 11 сентября 2011

<source lang="xml"> <screens>

  <sc id="1"  nm="Меню">                                        
     <st id="1" w="800" h="300" x="0" y="0" nm="Кнопки" kn="">  
        <ob id="1" name="Фон" w="640" h="320" x="0" y="0" z="0" al="1" res="24"/>                                          
     </st>
     <st>
     </st>
  </sc>

</screens> </source>