【问题标题】:AnyLogic - create objects dynamically on simulation timeAnyLogic - 在仿真时动态创建对象
【发布时间】:2017-01-12 04:44:00
【问题描述】:

是否可以在运行时动态创建对象或修改它们?例如,单击按钮、创建另一个按钮或更改道路的行数? 当我为按钮操作编写此代码时,在运行时

road123.setBackwardLanesCount(3);

我收到以下错误:

根: road123:标记元素已经初始化,不能修改,请使用无参数构造函数,进行设置,最后调用initialize()函数

【问题讨论】:

  • 你能提供更多关于你的代码的信息吗? road123 是什么 obj 类?您如何尝试添加/删除按钮/线条
  • road123 是一个道路对象。
  • 嗯,很难在代码中创建对象,然后将其动态添加到 GUI。您必须将其添加到 anylogic 运行时引擎。最简单的方法是创建您需要的对象,然后使用 button.setvisible(false) 隐藏您不需要的对象。但是,如果那不是和选项。我最好的建议是创建一个 botton,然后查看 main 的 anylogic 代码,看看它是如何创建和添加的。

标签: simulation anylogic traffic-simulation


【解决方案1】:

您尝试在运行时使用参数化构造函数创建的任何对象都会出现该错误。如果您使用简单的构造函数(只是“()”)创建对象,然后单独设置所有参数,则不会遇到该问题。检查 Anylogic API 以获取有关您正在使用的对象的特定信息,因为如果您使用简单的构造函数创建它,则有些要求您在设置所有参数后对该对象调用 .initilaze() 。此外,如果您想在运行时将对象添加到屏幕上,您需要将此代码添加到创建它的函数中:

@Override
public void onDraw( Panel panel, Graphics2D graphics) {
    obj.drawModel(panel, graphics, true);
}

其中 obj 被替换为您动态创建的对象的名称。

【讨论】:

    猜你喜欢
    • 2021-04-28
    • 1970-01-01
    • 2022-01-21
    • 2016-10-21
    • 2023-02-06
    • 2014-08-24
    • 2020-04-12
    • 2020-01-10
    • 2021-09-15
    相关资源
    最近更新 更多