Unbound 2.0 (документация)
Дата: 29.04.2019 15:25:35
MatroseFuchs: Controllers Контроллер -- сущность, выполняющая один тип действий с
заданным объектом. У контроллеров $Instance, $FxInstance и $Repeat
- объект указывается в поле renderer; контроллер $Animation
направлен на родительский объект; контроллер $Sector сам является
объектом. $Instance Добавляет на сцену экземляр element'a. Скрытый
текст (controller $Instance renderer='PlayerListTextLine'
layout=false (args entityId="13123") (exprs (scope (bind width
"290") (bind isAlive "isAlive") (bind isSelf "isSelf") ) ) (bind
enabled "isBoolTrue") ) renderer задаёт элемент,
с которым контроллер будет производить операции. Доступен для
биндинга. layout отвечает за то, будет ли работать layout
система. Значение по умолчанию false args при вызове
передаёт в рендерер значение из скоупа, в котором находится.
exprs выполняется на стороне рендерера, но имеет доступ к
родительскому скоупу. Может содержать выражения и биндинги. Через
этот атрибут позволяет слушать в ребенке переменные из
родительского скоупа. enabled задаёт выражение для
срабатывания контроллера. Контроллер сработает, если выражение ==
true. trigger задаёт выражение для срабатывания контроллера.
Контроллер сработает, если выражение изменит значение. event,
аналог enabled, но реагирует на Events В некоторых случаях
не требуется выделять отдельный элемент, тогда блоки можно вложить
в атрибут (exprs и выставить layout=true у контроллера.
Скрытый текст (controller $Instance layout=true (exprs (tf (name =
'level') (class HeroTitleTextStyle) (selectable = false) (bind text
"parentLevel") ) ) ) Скрытый текст (controller
$Instance renderer='OwnHealthBar' (args _entityId="entityId")
(bindcall recreate (bind trigger "entityId")) ) recreate -
метод, который пересоздает инстанс $FxInstance Временно добавляет
на сцену экземпляр элемента, который будет удалён со сцены
через «lifetime» секунд. Скрытый текст (controller
$FxInstance renderer='DamageDangerFX' lifetime=5 (args
data="$event") (bindcall create (event
"$datahub.getEntity(entityId).damageDanger.evDamage")) )
Скрытый текст (controller $FxInstance renderer='LevelView'
lifetime=2 (args textStyle='HeroTitleTextStyle') (exprs (scope
(level = "parentLevel") (radius = 40) ) ) (bindcall create (event
"onClick")) ) Скрытый текст (def element
LevelView(textStyle:str = 'MainTextStyle') layout=true (scope
(event __onParamChange) (var radius:number = 13 (dispatch
__onParamChange on='evChanged') ) (var color:number = 0xfff2ad
(dispatch __onParamChange on='evChanged') ) (var index:number =
"$index") ) (style (bind width "radius * 2") (bind height "radius *
2") (align = "center|middle") ) (.graphics (bindcall clear
init=true (event "__onParamChange")) (bindcall lineStyle 1 "color"
0.3 init=true watch=false (event "__onParamChange")) (bindcall
drawCircle "radius" "radius" "radius" init=true watch=false (event
"__onParamChange")) (bindcall endFill init=true (event
"__onParamChange")) ) (scope (var level:number = 0) ) (tf (name =
'level') (bind class "textStyle") (bind text "level" init=false)
(selectable = false) ) )
renderer, args, exprs, enabled,
layout - поведение аналогично поведению в $Instance
контроллере create - метод контроллера который создает
экземпляр элемента. Вызов этого метода можно подписать на
событие в scope. lifetime определяет время жизни
элемента на сцене. Если не задано - значение по
умолчанию 15 секунд. $Repeat Создает указанное число копий
рендерера. (controller $Repeat renderer='MapMarkerItem' (bind count
"collection.items.length" (event "collection.evAdded")) (args
size="size" mapScale="mapScale" scaleRatio="scaleRatio") )
Скрытый текст (scope (event onClick) (var countRenderers:number =
5) ) (controller $Repeat layout=true (bind count "countRenderers")
(exprs (element ButtonPrimary (scope (label = "'button_' + $index")
) (dispatch onClick args="{index : $index}" on='click') ) )
(bindcall removeChildAt "$event.index" init=false (event
"onClick")) ) renderer, args, exprs, enabled,
layout - поведение аналогично поведению в $Instance
контроллере count задаёт число копий рендерера. Может быть
любым expression'ом. В примере выше -- counter равен количеству
элементов в коллекции collection. removeChildAt(index)
- удаляет со сцены рендерер по index $index - целое
число, номер ребенка по порядку от 0 до конечного элемента. У
первого созданного элемента будет $index=0 и т.д. Автоматически
находится в скоупе ребенка с момента создания. $Animation
Анимирует значения свойств target display object, переменных в
scope или стилей. Доступные методы контроллера с примерами
заполнения параметров play - запуск одной анимации Скрытый
текст (play duration=1.0 # продолжительность анимации в секундах.
Обязательный параметр и должен быть больше ноля. to={ alpha:1, y:0,
visible:true } # финальные значения анимации. Обязательный
параметр, если не передано имя анимации name(см. ниже), в противном
случае пустой по умолчанию. from={ alpha:0, y:50, visible:false } #
стартовые значения анимации. Если не указать -- анимация начнется с
тех значений, которые находятся в скоупе. Параметр пустой по
умолчанию. name='AnimX' # имя заранее объявленной анимации.
Например: (def animation AnimX() from={x:0} to={x:300}). Пустое по
умолчанию. delay=2.0 # указывает задержку перед проигрыванием
анимации. По умолчанию равно 0.0. easing="Easing.quint_out" #
функция изменения анимации. Параметр пустой по умолчанию
(соответсвует Easing.line). repeatCount=1 # количество повторений
анимаций. Внимание! Параметр задает количество дополнительныйх
повторений, т.е. если repeatCount=0, анимация проиграется один раз.
-1 - анимация будет проигрываться постоянно. По умолчанию равно 0.
reverse=false # условия отыгрывания анимации в обратную сторону, to
→ from (при условии наличия обоих полей, либо наличии name). По
умолчанию равно false. callbacks="{ # коллбеки анимаици. По
умолчанию коллбеки не заданы. onComplete: onCompleteEvent, #
срабатывает, когда анимация закончилась onStart: onStartEvent, #
срабатывает, когда анимация стартует onRepeat: onRepeatEvent, #
срабатывает каждый раз, когда анимация начинается с начала. В
коллбек передается параметр repeatCount - количество оставшихся
повторений. onUpdate: onUpdateEvent, # срабатывает каждый раз,
когда анимация меняет значение параметра. В коллбек передается dict
с текущими значениями параметров переданных в 'to' и 'from'. }"
id='anmId' # id анимации, по которому ее можно будет остановить
через метод stop. По умолчанию id="". ) Скрытый текст (scope
(var longTapArc:number = 0) (controller $Animation (bindcall play
duration= 0.5 from = { longTapArc:0 } to = { longTapArc:360 } (bind
enabled "keyState == Key.DOWN") ) ) ) Скрытый текст (block
(visible = "tacticalMap") (style (height = 100) (width = 100)
(backgroundColor = C_ALLY) ) (controller $Animation (bindcall play
duration=0.15 delay="tacticalMap ? 0.1 : 0" killAll=true
easing="Easing.cubic_out" from={ alpha:0, y:50, visible:false }
to={ alpha:1, y:0, visible:true } reverse="!tacticalMap" (bind
trigger "tacticalMap") ) ) ) bindcall указывает, что
запустить анимацию следует в соответствии с условиями, указанными
в bind enabled, bind trigger или event.
duration указывает длительность анимации в секундах. delay
указывает задержку перед проигрыванием анимации. from стартовые
значения анимации. Если не указать - анимация начнется с тех
значений, которые находятся в скоупе. to финальные значения
анимации. Обязательное поле. reverse условия отыгрывания анимации в
обратную сторону, to → from (при условии наличия обоих полей).
trigger условия срабатывания анимации, когда значение условия
меняется. Отличие от enabled в том, что enabled
срабатвает только когда выражение == toBoolean(true). ВАЖНО! На
момент запуска delay -- контроллер уже принял в себя значения всех
переменных на всех позициях. Если на момент окончания задержки
значения переменных изменились - контроллер об этом не узнает.
killAll - свойство, при старте анимации уничтожает все активные
анимации у объекта. playSeq - запуск последовательности
анимации Скрытый текст (playSeq "[ # основной обязательный
параметр, без имени, идет первым в списке, задает
последовательность анимаций. Синтаксис задания анимаций аналогичный
методу play. Доступные параметры: duration, to, from, name, delay,
easing, repeatCount, reverse, callbacks {duration:1.0,
to:{scale:2.0, alpha: 0.5}}, delay: 0.4}, {duration:2.0,
to:{scale:1.0, alpha: 1.0}, callbacks: "{onStart: onAnmStart}"},
..... ]" delay=2.0 # указывает задержку перед проигрыванием
анимации. По умолчанию равно 0.0. repeatCount=1 # количество
повторений последовательности анимаций. Внимание! Параметр задает
количество дополнительныйх повторений, т.е. если repeatCount=0,
последовательность проиграется один раз. -1 - последовательность
будет проигрываться постоянно. По умолчанию равно 0. callbacks="{ #
коллбеки последовательности анимаиций. По умолчанию коллбеки не
заданы. onComplete: onCompleteEvent, # срабатывает, когда анимация
закончилась onStart: onStartEvent, # срабатывает, когда анимация
стартует onStartItem: onStartEvent # вызывается, когда стартует
элемент последовательности. В коллбек передается параметр itemIndex
- индекс стартующей анимации. onRepeat: onRepeatEvent, #
срабатывает каждый раз, когда анимация начинается с начала. В
коллбек передается параметр repeatCount - количество оставшихся
повторений. }" id='anmId' # id последовательнсти анимаций, по
которому ее можно будет остановить через метод stopSeq. По
умолчанию id="". ) stop - остановка анимации (stop
id="anmId" # id анимации, которую необходимо остановить. Если id не
задан, а по умолчанию он не задан, то будут остановлены все
анимации, запущенные с помощью этого контроллера. ) stopSeq -
остановка последовательности анимаций (stopSeq id="anmId" # id
последовательности, которую необходимо остановить. Если id не
задан, а по умолчанию он не задан, то будут остановлены все
анимации, запущенные с помощью этого контроллера. ) Доступные
изинги: Скрытый текст Easing.line Easing.elastic_in
Easing.elastic_out Easing.bounce_in Easing.bounce_out
Easing.back_in Easing.back_out Easing.quad_in Easing.quad_out
Easing.cubic_in Easing.cubic_out Easing.quint_in Easing.quint_out
Примеры: Пример запуска анимации по клику на кнопку и
отображение в текстовом блоке изменяющихся значений. Анимация
переменной в scope : Скрытый текст (scope # Объявить переменную,
которую хотим анимировать (var animationVariable:number = 0) #
Event для вызова метода play (event playAnimationEvent) #
Контроллер обязательно должен быть расположен в scope (controller
$Animation (bindcall play duration = 10 from =
"{animationVariable:0}" to = "{animationVariable:360}" easing =
"Easing.cubic_out" (event "playAnimationEvent") ) ) ) (tf (class
HeroTitleYellowTextStyle) (bind text "animationVariable") )
(element ButtonPrimary (scope (label = 'Play') (dispatch
playAnimationEvent on='evBtnLeftClickEvent') ) )
Пример анимации свойств стилей Скрытый текст (scope (event
playAnimationEvent) (var triggerAnimation:bool = false) (bind
triggerAnimation "!triggerAnimation" init=false watch=false (event
"playAnimationEvent")) ) (block (style (position = "absolute")
(width = 50) (height = 30) (top = 100) (left = 100)
(backgroundColor = 0xFFFF0000) (alpha = 0) ) (controller $Animation
(bindcall play duration=2 easing="Easing.cubic_out" from="{alpha:0,
top:100, width: 50, height: 30}" to="{ alpha:1, top:200, width:
100, height: 50 }" reverse="!triggerAnimation" (bind trigger
"triggerAnimation") ) ) ) (element ButtonPrimary (scope (label =
'Play') (dispatch playAnimationEvent on='evBtnLeftClickEvent') ) )
trigger - условие срабатывания анимации, когда значение
условия меняется на противоположное. Отличие от enabled в
том, что enabled срабатывает только когда выражение true.
Trigger vs Enabled (controller $Animation (bindcall play duration =
"HEALTH_ANI_MIN" enabled="isEnabled" ..... ) (controller $Animation
(bindcall play duration = "HEALTH_ANI_MIN" trigger="isTarget ==
'ally'" ..... ) trigger - условие срабатывания анимации, когда
значение условия меняется на противоположное. Отличие
от enabled в том, что enabled срабатывает только когда
выражение true. Внимание! Особенность работы
контроллера с параметром delay. Значения анимируемых переменных в
параметре to вычитываются контроллером без учета delay. Поэтому
если на момент окончания задержки значения переменных изменились
контроллер об этом не узнает. $Sector Рисует сектор используя
flash.display.Graphics target объекта Скрытый текст (def element
SectorControllerSample() layout=true (x = 10) (y = 10) (scope (var
_circOffset:number = 30) (var _circArc:number = 60) (var
_circRad:number = 200) (var _circInRad:number = 50) (var
_circColor:number = 0xffff0000) (var _circGradient:array =
[0xffff0000, 0xffff00ff, 0xffffff00]) (var _circAlphas:array = [1,
0.5, 0.5]) (var _circRatios:array = [0, 127, 255]) (var
_lineThickness:number = 10) (var _lineColor:number = 0xffffffff)
(var _lineAlpha:number = 0.5) ) (block (mc 'flash.display.Sprite'
(controller $Sector (offset="_circOffset") (color="_circColor" )
(arc="_circArc" ) (radius="_circRad" ) (colors="_circGradient" )
(alphas="_circAlphas") (ratios="_circRatios")
(lineThickness="_lineThickness") (lineColor="_lineColor")
(lineAlpha="_lineAlpha") (innerRadius="_circInRad") ) ) ) )
Unbound 2.0 (документация)














