Log in
Перейти к содержимому
Для публикации в этом разделе необходимо провести 1 боёв.
MedvedevTD

[UB] Документация по Unbound framework

В этой теме 8 комментариев

Рекомендуемые комментарии

16 859
Разработчик
6 959 публикаций
8 248 боёв

Байндинги

Байндинги - это директивы, назначающие элементам различные поведения: синхронизация с моделью данных, показ тултипа, драг-н-дроп и т.п..

Объявляются байндинги так: (bind %binding_name% "binding_expression1; binding_expression2; ..."). Синтаксис binding expressions - это ограниченное подмножество синтаксиса JS / AS3 - поддерживаются строки, числа, true, false, null, арифметические, логические операции, операторы сравнения, обращения к элементам массива через [], обращения к свойствам объекта через . и тернарный оператор. Вычисляются binding expressions относительно текущего scope (т.е. "player.name" на самом деле есть "scope.player.name").

При инстанциировании элемента фреймворком автоматически создается объект scope, в который программист может внести любые данные по своему усмотрению. Для управления scope можно написать контроллеры, которые будут получать данные от игровой логики (например, через GameInfoHolder), обрабатывать их и заполнять ими scope.

public class NewWindowController extends UbController
{
  
    public var gameInfoHolder:GameInfoHolder;
     
    override public function init(... params):void
    {
        scope.playerName = ... // grab player name from GameInfoHolder
    }
  
}

Для того, чтобы контроллер не обрезался линкером (or whatever this thing is called in SWF's compilation), в главном классе окна следует импортировать его и объявить приватную переменную соответствующего типа.

При инстанциации в контроллеры инжектятся нужные зависимости - фреймворк делает это для каждого публичного поля. Все публичные методы контроллера импортируются в scope, к которому он привязывается.

Контроллер можно объявить так:

(bind controller "lesta.dialogs.new_window.NewWindowController; arg1; arg2; ...")

Вычисленные arg1, arg2, arg3, ... передаются в метод init контроллера.

 

Часто используемые контроллеры

  Показать содержимое

 

  • Плюс 3
  • Скучно 1

Рассказать о публикации


Ссылка на публикацию
5 150
[LESTA]
Разработчик
1 373 публикации
7 558 боёв

Список доступных байндингов

 

UbChildBinding

  Показать содержимое

 

UbInstanceBinding

  Показать содержимое

 

UbEventBinding

  Показать содержимое

 

UbSyncBinding

  Показать содержимое

 

UbRepeatBinding

  Показать содержимое

 

UbGeneratorBinding

  Показать содержимое

 

UbDraggableBinding

  Показать содержимое

 

UbClikListBinding

  Показать содержимое

 

UbStyleBinding

  Показать содержимое

 

UbStyleClassBinding

  Показать содержимое

 

UbAppearBinding

  Показать содержимое

 

UbTransitionBinding

  Показать содержимое

 

UbTooltipBinding

  Показать содержимое

 

UbSequenceBinding

  Показать содержимое

 

UbPropertyBinding

  Показать содержимое

 

UBVariablesBinding

  Показать содержимое

 

UbCatchEventBinding

  Показать содержимое

 

UbDispatchBinding

  Показать содержимое

 

UbDispatchDelayResetBinding

  Показать содержимое

 

UbChangeDispatchBinding

  Показать содержимое

 

UbCountdownBinding

  Показать содержимое

 

UbClockBinding

  Показать содержимое

 

UbContainsBinding

  Показать содержимое

 

UbFileBinding

  Показать содержимое

 

UbEventSequenceBinding

  Показать содержимое

 

UbTimeFormatBinding

  Показать содержимое

 

UbRestrictFeedbackBinding

  Показать содержимое

 

UbIndexOfBinding

  Показать содержимое

 

UBAccountLevelBinding

  Показать содержимое

 

SFMRequestBinding и SFMActionBinding

  Показать содержимое

 

FocusBinding

  Показать содержимое

 

InputMappingBinding

  Показать содержимое

 

UbSubstituteBinding

  Показать содержимое

 

UbSubstituteBinding

  Показать содержимое

 

DesignerCollectionBinding

  Показать содержимое

 

ConcatBinding

  Показать содержимое

 

ClipboardBinding

  Показать содержимое

 

ColorTransformBinding

  Показать содержимое

 

SliceBinding

  Показать содержимое

 

ResourceBinding

  Показать содержимое

 

entityDH

  Показать содержимое

 

firstEntityDH

  Показать содержимое

 

primaryEntityDH 

  Показать содержимое

 

DHCollectionGeneratorBinding

  Показать содержимое

 

GSTimelineBinding

  Показать содержимое

 

WowsResizeBinding

  Показать содержимое

 

UbPluralTextBinding

  Показать содержимое

 

UbContextMenuBinding

  Показать содержимое

 

UbWatchBinding

  Показать содержимое

 

ActionIsDisplayBinding

  Показать содержимое

 

UbRepeatWithScopeHoldBinding

  Показать содержимое

 

UBServerTimeBinding

  Показать содержимое

 

UbFeatureCheckBinding

  Показать содержимое

 

UbGeneratorBinding

  Показать содержимое

 

UbInOutActionBinding

  Показать содержимое

 

UbIMEEnableBinding

  Показать содержимое

 

UbFadeBinding

  Показать содержимое

 

UbBlurLayerBinding, UbBlurMapBinding

  Показать содержимое

 

UbStageSizeBinding

  Показать содержимое

 

UBClickSplitBinding

  Показать содержимое

 

UbLinearChartBinding

  Показать содержимое

 

 

  • Плюс 2

Рассказать о публикации


Ссылка на публикацию
5 150
[LESTA]
Разработчик
1 373 публикации
7 558 боёв

Список байндингов DataHub 2.0

 

DHCollectionRepeatBinding

  Показать содержимое

 

DHCollectionGeneratorBinding

  Показать содержимое

 

DHCollectionBinding

  Показать содержимое

 

DHEntityBinding

  Показать содержимое

 

DHHandleEventBinding

  Показать содержимое

 

DHWatchBinding

  Показать содержимое

 

DHDataRefBinding

  Показать содержимое

 

  • Плюс 2

Рассказать о публикации


Ссылка на публикацию
5 150
[LESTA]
Разработчик
1 373 публикации
7 558 боёв

Список поддерживаемых событий (events) для мыши

Unbound поддерживает лишь часть мышиных событий из ActionScript 3.0.

Пример:

(bind dispatch "'click'; 'eventName'; {}")

 

событие
описание
click Щелчок левой кнопкой мыши
mouseDown Срабатывает в момент нажатия левой кнопки мыши
mouseUp Срабатывает в момент отпускания левой кнопки мыши
mouseWheel Прокрутка колёсика мыши в любом направлении
mouseOver Наведение указателя на элемент
mouseOut Срабатывает в момент ухода указателя мыши с элемента
mouseMove Срабатывает в момент движения указателя над элементом
rollOver Аналогично mouseOver, но не сработает над дочерними элементами
rollOut Аналогично mouseOut, но не сработает над дочерними элементами

Примечание

В ActionScript есть разница между mouseOver/rollOver и mouseOut/rollOut, в Unbound она сохраняется.
Это значит, что событие mouseOver сработает как над родителем, так и над детьми, в отличие от rollOver, который сработает один раз над родителем и не сработает над детьми.

  • Плюс 3

Рассказать о публикации


Ссылка на публикацию
5 150
[LESTA]
Разработчик
1 373 публикации
7 558 боёв

Блоки

Элемент — это независимый корневой блок самого верхнего уровня, внутри которого задаются остальные дочерние блоки. Пример описания корневого блока в XML файле:

<block className="SomeClassName">

Объявление элемента нужно в двух случаях:

  1. Когда мы хотим создать новое окно;
  2. Когда мы хотим создать новый элемент, который будет использоваться в любом существующем окне.

При этом, элемент может создаваться как динамически (на основе выполнения логических условий), так и статически.
Пример динамического появления блока — кнопка «Забрать награду» в календаре:

imageBlock1.pngimageBlock2.png

 

Дочерние блоки бывают следующих типов:

  • block — спрайтовый блок;
    <block>
    ...
    </block>
  • tf — текстоый блок;
    <block type="text">
  • mc — блок типа Movie Clip, определённый в каком-либо флэшовом *.fla-файле и экспортированный в ActionScript; 
    <block className="some_class_name" type="native">

Если выполнить код выше, то на экране мы ничего не увидим, потому что по умолчанию блоки создаются без цветовой заливки, с нулевой высотой и шириной.
Для управления их обликом как раз и используются стили, о них речь ниже.

  • Плюс 1

Рассказать о публикации


Ссылка на публикацию
5 150
[LESTA]
Разработчик
1 373 публикации
7 558 боёв

Стили

Облик элемента задаётся набором атомарных стилевых свойств, таких как высота, ширина, цвет, расположение и так далее.

 

  Показать содержимое

 

Отдельные стилевые свойства можно объединять в стилевые классы

  • class — стилевой класс;
  • style — выражение, задающее стиль элемента в конкретно этом блоке (так называемый inline-стиль) через перечисление стилевых свойств.
  • атомарные стилевые свойства,


По аналогии с HTML, применяется то стилевое свойство, которое применено к элементу последним:

  Показать содержимое

 

  • Плюс 1

Рассказать о публикации


Ссылка на публикацию
5 150
[LESTA]
Разработчик
1 373 публикации
7 558 боёв

Типографика

Шрифт

Основной шрифт, используемый в игре, это Warhelios Condensed. Он бывает в двух начертаниях — обычном (WarheliosCondC) и жирном (WarheliosCondCBold).

Правила использования

Следует избегать использование своих стилей текста, и вместо этого использовать готовые стилевые классы:

Класс
Для чего используется
$TextDefault13NM второстепенный (вспомогательный) текст
$TextDefault15NM основной класс, используйте его в большинстве случаев
$TextDefault17NM заголовки 4 уровня
$TextDefault19NM заголовки 3 уровня
$TextDefault21NM заголовки 2 уровня
$TextDefault23NM заголовки 1 уровня
   
$TextDefaultBoldNM имя корабля и его уровень,
шапки таблиц,
заголовки разворачиваемых списков,
заголовки групп характеристик
$TextDefaultBold17NM заголовки параграфов
$TextDefaultBold19NM заголовки 3 уровня повышенной значимости
$TextDefaultBold21NM заголовки 2 уровня повышенной значимости
$TextDefaultBold23NM

заголовки 1 уровня повышенной значимости,
заголовки окон

 

Пример стилизации текста

Исходный текст:

<block type="text"">
    <bind name="text" value="'Hello, world!'"/>  # этот текст будет чёрного текста и в гарнитуре Arial
</block>

 

Теперь добавим стандартный стилевой класс, использующий белый цвет по умолчанию:

<block type="text"">
    <styleClass value="$TextDefaultNM/>  # теперь текст стал белым, с кеглем 15px, в гарнитуре Warhelios Condensed
    <bind name="text" value="'Hello, world!'"/>
</block>

 

Теперь поменяем текст, переопределив текст из класса своим, добавив атрибут (textColor) в блок (style):

<block type="text"">
    <styleClass value="$TextDefaultNM/>
    <style>
        <textColor value="0xFFCC66"/>    # золотистый цвет премиумных кораблей
    </style>
    <bind name="text" value="'Hello, world!'"/>
</block>
  • Плюс 1

Рассказать о публикации


Ссылка на публикацию
5 150
[LESTA]
Разработчик
1 373 публикации
7 558 боёв

Цвета

Ограниченная палитра специальных цветов используется в игре для текстов и иконографики:

Unbound_limit_colors.png

В общем случае, цвета можно выбирать из палитры так называемых безопасных Web-цветов:

Unbound_colours.png

  • Плюс 1

Рассказать о публикации


Ссылка на публикацию
Гость
Эта тема закрыта для публикации новых ответов.

×