【问题标题】:How to make a button trigger an event (Timer)?如何使按钮触发事件(定时器)?
【发布时间】:2019-11-02 07:59:51
【问题描述】:

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

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

【问题讨论】:

    标签: anylogic


    【解决方案1】:

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

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

    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 次...或者如果您后悔单击它这么快...我不知道

    【讨论】:

    • 很好的解释!
    • 是的,非常感谢您的帮助。我会考虑这两种方法。
    • 我更喜欢使用你的方法,因为它还显示了撤离过程停止前的倒计时,非常感谢。
    【解决方案2】:

    为此使用Dynamic Event

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

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

    【讨论】:

    • 非常感谢先生!
    猜你喜欢
    • 2014-05-04
    • 1970-01-01
    • 2016-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-03
    • 2013-10-11
    • 1970-01-01
    相关资源
    最近更新 更多