Как заставить кнопку вызвать событие (Таймер)? - PullRequest
1 голос
/ 19 июня 2019

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

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

Ответы [ 2 ]

1 голос
/ 19 июня 2019

Несмотря на то, что динамическое событие подходит для вашего приложения, вы также можете использовать событие управления пользователем: user controlled event

И тогда в вашей кнопке вы можете использовать следующий код:

event.restart(60,SECOND); //you can choose any timeout here

или

event.restart(); // this will use the configuration, which in this case I set up to 60 seconds

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

  1. С помощью динамического события вы создадите еще один экземпляр события. Это означает, что если вы нажмете кнопку в момент времени t = 0 секунд, а время t = 30 секунд, вы создадите два события в момент времени t = 60 секунд и время t = 90. секунд
  2. При событии управления пользователем вы перезапустите это же событие. если вы нажмете кнопку при t = 0 секунд и t = 30 секунд, вы сгенерируете уникальное событие при t = 90 секунд.

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

1 голос
/ 19 июня 2019

Используйте для этого Dynamic Event.

  • Установите его, перетащив его из библиотеки агента AnyLogic в рабочую область и присвоив ему имя (здесь: MyDynamicEvent ).
  • Добавьте код, который вы хотите выполнить при запуске таймера, в поле Действие

  • Установите один (или несколько) синхронизированных экземпляров для этого события, используя код create_MyDynamicEvent(60,SECOND);. Примечание. Синтаксис этого оператора всегда create_, за которым следует фактическое имя, которое вы дали вашему типу DynamicEvent.

Dynamic Event Definition

...