如何使按钮触发事件(计时器)?

时间:2019-06-19 14:25:32

标签: anylogic

我正在进行消防疏散项目,想在单击按钮后触发事件。基本上,我想使用按钮功能手动开始消防疏散过程,但想触发一个计时器约60秒,以便使行人有时间使用事件功能疏散。

我试图通过手动单击另一个按钮来使行人停止疏散过程,但是我想使用事件触发计时器,因为这将是进行模拟的更好方法。单击按钮后,似乎无法触发事件。我试过更改触发器类型,但不确定从何处去。是否需要任何代码或需要其他步骤?

2 个答案:

答案 0 :(得分:1)

为此使用Dynamic Event

  • 通过将其从AnyLogic代理库拉到工作区并为其命名(在这里为 MyDynamicEvent )来进行设置。
  • Action 字段

  • 中添加计时器计时后要执行的代码
  • 使用代码create_MyDynamicEvent(60,SECOND);为此事件设置一个(或几个)定时实例。注意:该语句的语法始终为create_,后跟您为DynamicEvent类型指定的实际名称。

Dynamic Event Definition

答案 1 :(得分:1)

即使动态事件在您的应用程序中很好,您也可以使用用户控制事件: 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个事件秒
  2. 使用用户控制事件,您将重新启动同一事件。如果在t = 0秒和t = 30秒之间单击按钮,则将在t = 90秒时生成一个唯一事件。

因此,您可以根据自己的喜好选择。我希望用户控件能够在您两次单击按钮时...或者如果您后悔如此快地单击它...我不知道