Шаблон функции запуска цепочки эффектов определенного типа на виджете. Является абстрактным и не может быть вызван непосредственно.
На виджете в один момент времени может существовать не более одного эффекта / цепочки эффектов каждого типа. При запуске эффекта / цепочки эффектов имеющийся эффект / цепочка эффектов того же типа будет прерван.
-- Класс
WidgetSafe или один из его наследников (зависит от типа эффекта)
-- Семантика
function PlayEffect( self, sequenceParams )
-- Входные параметры
self: WidgetSafe - Виджет на котором запускается эффект
sequenceParams: table - Таблица описывающая параметры цепочки эффектов.
Обязательные поля:
[ 1 ] .. [ N ] - N (1 <= N <= 256, без разрывов) таблиц описателей шага эффекта, каждый описатель шага это таблица вида { start, finish, timeMs, algoDesc }. Описание полей таблицы описателя шага
start: (тип зависит от типа эффекта) or nil - Начальное состояние виджета, может отсутствовать или быть не полным (в случае табличного описателя), в этом случае недостающие данные будут взяты из текущего состояния виджета (на 1 шаге) или из конечного состояния на предыдущем шаге
finish: (тип зависит от типа эффекта) or nil - Конечное состояние виджета, может отсутствовать или быть не полным (в случае табличного описателя), в этом случае недостающие данные будут взяты из начального состояния виджета
timeMs: number (int64) or nil - Длительность эффекта в миллисекундах, должно быть строго положительное, в случае nil используется значение 1000.
algoDesc: number (int) or table or nil - описание алгоритма эффекта:
nil - Значение по умолчанию - EA_MONOTONOUS_INCREASE
int - Значение EA_*
table - Описание алгоритма EA_* с параметрами, обязательное поле type - number (int) - значение EA_*, набор полей зависит от алгоритма (смотри описание алгоритмов эффектов)
Опциональные поля:
showOnStart: boolean or nil - показать виджет перед началом цепочки эффектов, по умолчанию false
hideOnFinish: boolean or nil - скрыть виджет после окончания цепочки эффектов, по умолчанию false
cycled: boolean or nil - зациклить цепочку эффектов, по умолчанию false
Примечание: зацикленная цепочка эффектов будет исполняться до явного прерывания, соответственно оно должно существовать.
sendStepEvent: boolean or nil - посылать событие об окончании каждого промежуточного шага эффекта (но не последнего), по умолчанию false
sendFinishEvent: boolean or nil - послать событие об окончании цепочки эффектов, по умолчанию false
eventLabel: string or number or nil - не влияет на работу цепочки эффектов, при наличии будет присылаться в событиях шага / окончания цепочки, приводится к строке, по умолчанию отсутствует.
startOffsetMs: number (int64) or nil - С какой миллисекунды начать цепочку эффектов (может быть больше длительности цепочки, тогда start = start % duration), нужно для синхронизации эффектов на разных виджетах, по умолчанию 0
-- Возвращаемые значения
Нет