Вопросы по теме создания собственного скрипта.
Модераторы: ElenVR, Людмила, PR
-
- Сообщения: 1
- Зарегистрирован: 18 ноя 2014 00:10
-
- Сообщения: 7093
- Зарегистрирован: 26 фев 2004 09:53
- Откуда: Techsupport SoftLab-NSK
-
- Сообщения: 76
- Зарегистрирован: 02 июн 2010 12:48
- Откуда: Красноярск, Прима-ТВ
- Контактная информация:
Добрый день. Это вас Красноярск беспокоит =) Вы можете мне разъяснить такой вопрос:
1) Есть ли разница в последовательности остановки скрипта при нажатии кнопки выключения скрипта в ОнЭйре и остановке скрипта по команде titleObjGroupOff?
В обоих случаях начинается все с function Stop(atStop : double, fadeDuration : double) : boolean? Такое впечатление что нет.
2) Что происходит в скрипте при истечении времени заданного в titleObjGroupOn 0:00:хх? Вызываются для всех титр.элементов объекта методы элемент.stop() или function Stop ?
1) Есть ли разница в последовательности остановки скрипта при нажатии кнопки выключения скрипта в ОнЭйре и остановке скрипта по команде titleObjGroupOff?
В обоих случаях начинается все с function Stop(atStop : double, fadeDuration : double) : boolean? Такое впечатление что нет.
2) Что происходит в скрипте при истечении времени заданного в titleObjGroupOn 0:00:хх? Вызываются для всех титр.элементов объекта методы элемент.stop() или function Stop ?
-
- Сообщения: 7093
- Зарегистрирован: 26 фев 2004 09:53
- Откуда: Techsupport SoftLab-NSK
1) Есть ли разница в последовательности остановки скрипта при нажатии кнопки выключения скрипта в ОнЭйре и остановке скрипта по команде titleObjGroupOff? В обоих случаях начинается все с function Stop(atStop : double, fadeDuration : double) : boolean? Такое впечатление что нет.
Разница есть. При исполнении команды из расписания, как правило, известны времена начала и остановки титровального объекта. Поэтому в скрипт прилетают старт/стоп с конкретными временами.
При остановке через кнопку происходит остановка "прямо сейчас", т.е. время практически соответствует текущему.
Если вы не переопределили функцию Stop в своём скрипте или при её отработаке произошла ошибка (исключение), то за вас всю работу будет выполнять так называемый базовый класс (титровальное ядро). Оно и "скажет" всем элементам скрипта "стоп".2) Что происходит в скрипте при истечении времени заданного в titleObjGroupOn 0:00:хх? Вызываются для всех титр.элементов объекта методы элемент.stop() или function Stop ?
-
- Сообщения: 7093
- Зарегистрирован: 26 фев 2004 09:53
- Откуда: Techsupport SoftLab-NSK
-
- Сообщения: 76
- Зарегистрирован: 02 июн 2010 12:48
- Откуда: Красноярск, Прима-ТВ
- Контактная информация:
Даниленко Сергей писал(а):1) Есть ли разница в последовательности остановки скрипта при нажатии кнопки выключения скрипта в ОнЭйре и остановке скрипта по команде titleObjGroupOff? В обоих случаях начинается все с function Stop(atStop : double, fadeDuration : double) : boolean? Такое впечатление что нет.
Разница есть. При исполнении команды из расписания, как правило, известны времена начала и остановки титровального объекта. Поэтому в скрипт прилетают старт/стоп с конкретными временами.
При остановке через кнопку происходит остановка "прямо сейчас", т.е. время практически соответствует текущему.
Мне хочется понять последовательность того что происходит в скрипте при этом.
Если команда из расписания установила длительность показа титра, то вызовется сразу после его запуска function Stop - с заданной длительностью, в этой функции нужно задать главному элементу длительность.
Затем, по истечении длительности показа - функция Stop титра уже не вызывается? А за счет чего останавливается главный элемент - ОнЭйром?
-
- Сообщения: 7093
- Зарегистрирован: 26 фев 2004 09:53
- Откуда: Techsupport SoftLab-NSK
Я уже писал, что есть два способа поведения в скрипте.
Первый - вы ничего сами не останавливаете, т.е. не перегружаете Stop. В этом случае за вас как-то это сделает титровальное ядро. На мой взгляд - это не верный способ поведения, но он имеет право на жизнь.
Второй - вы в скрипте сами заботитесь об остановке всех входящих в него титровальных элементов. Я, например, поступаю так: в скрипте заводится специальный служебный элемент (обычно мы его называем main). И именно по нему происходит остановка всех остальных элементов. Т.е. в Stop вы останавливаете main:
Первый - вы ничего сами не останавливаете, т.е. не перегружаете Stop. В этом случае за вас как-то это сделает титровальное ядро. На мой взгляд - это не верный способ поведения, но он имеет право на жизнь.
Второй - вы в скрипте сами заботитесь об остановке всех входящих в него титровальных элементов. Я, например, поступаю так: в скрипте заводится специальный служебный элемент (обычно мы его называем main). И именно по нему происходит остановка всех остальных элементов. Т.е. в Stop вы останавливаете main:
В нужный момент времени main остановится и сделает нотификацию об этом. Тогда уже можно остановить всех остальных:override public function Stop(atStop : double, fade : double) : boolean
{
Trace("script.Stop({0})", atStop);
try
{
Main.Stop(atStop, fade);
return true;
}
catch (e : Exception)
{
Trace("script.Stop() -- Exception: {0}", e.ToString());
}
return false;
}
override public function OnElementStop(name : String, index : int, taskId : int, stopTime : double, taskText: String)
{
try
{
if ( name == Main.Name )
{
Backgr.Abort(0);
Title.Abort(0);
::::::::
::::::::
}
}
catch (e : Exception)
{
Trace("+++ [{0}].stop() -- Exception: {1}", name, e.ToString());
}
}
}
-
- Сообщения: 1
- Зарегистрирован: 18 апр 2015 05:32
В приведенно ниже фрагменте скрипта, через 10 секунд после старта отображается объект картинка, которая через 20 секунд скрывается. Но нотификация об остановке не прилетает. Возникает ряд вопросов:Даниленко Сергей писал(а): ...
В нужный момент времени main остановится и сделает нотификацию об этом.
...
1) Должна ли быть нотификация OnElementStop от Картинки ?
2) Будет ли при такой конструкции нотификация OnElementStop ?
При этом Main при остановке вызывает нотификацию.
Код: Выделить всё
override function Start(atStart : double, fadeDuration : double) : boolean {
Debug.WriteLine("script Start");
try {
Main.Start (0,1);
Picture.LoadTask(LogoFile,ETaskType.eTaskFileName);
Picture.Start(-10,1);
Picture.Stop(-20,1);
} catch (ee: Exception) {
Debug.WriteLine("script Start exception:" + ee.Message);
throw;
}
return true;
override function OnElementStop(name: String, index: int, id: int, time: double, text: String) {
Debug.WriteLine("===script OnElementStop:" + name + " index:" + index + " id:" + id + " time:" + time + " text:" + text);
try {
// TODO:
} catch (ee) {
Debug.WriteLine("script OnElementStop exception:" + ee);
}
}
-
- Сообщения: 7093
- Зарегистрирован: 26 фев 2004 09:53
- Откуда: Techsupport SoftLab-NSK