в соответствии с руководством,
Процедура в sysVar вызывается только при изменении значения переменной. Это также может быть написано как на sysVar_change. Если вы хотите получать уведомления об обновлениях значения переменной, которые не меняют значение, вы должны использовать вместо sysVar_update.
В моем примере сценария у меня есть системная переменная s::sysv
изПользовательский тип данных Struct X
, где X
имеет два поля: A
и B
.
В моем CAPL-скрипте я поместил следующее:
on sysvar_change s::sysv.A
{
// do stuff
}
Ожидаемый выводделать вещи только тогда, когда s::sysv.A
меняется. Однако, поскольку s::sysv.B
часто обновляется во время выполнения симуляции, процедура on sysvar_change s::sysv.A
вызывается намного чаще, чем я ожидаю, даже если A
не меняет своего значения.
Iне понимаю почему, и я стараюсь обойти это, кто-нибудь может помочь?
Редактировать:
в соответствии сВ одном ответе обработчик события - это не элемент структуры, а переменная. Однако ключевое слово this
теперь указывает на элемент структуры, а не на переменную.
Этот бит руководства также имеет значение:
Вы также можете реагировать ваналогичным образом оценивать изменения конкретных элементов системной переменной типа struct или generic array. Для этого добавьте элемент к имени переменной.