1

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

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

4

2 回答 2

3

即使动态事件在您的应用程序中很好,您也可以使用用户控制事件: 用户控制事件

然后在您的按钮中,您可以使用以下代码:

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 秒时生成一个唯一事件。

所以取决于你喜欢哪一个……你可以选择。如果您单击按钮 2 次...或者如果您后悔单击它这么快...我不知道,我更喜欢用户控件

于 2019-06-19T15:25:03.413 回答
1

Dynamic Event为此使用。

  • 通过将其从 AnyLogic 代理库拉到工作区并为其命名(此处为:MyDynamicEvent)来设置它。
  • 在Action字段中添加您想要在计时器运行时执行的代码

  • 使用代码为此事件设置一个(或多个)定时实例create_MyDynamicEvent(60,SECOND);。注意:此语句的语法后面总是create_跟您给 DynamicEvent 类型的实际名称。

动态事件定义

于 2019-06-19T15:06:18.723 回答