AnyLogic - 在仿真时动态创建对象
AnyLogic - create objects dynamically on simulation time
是否可以在 运行 时间内动态创建或修改对象?例如,单击按钮时,创建另一个按钮或更改道路的行数?
当我为按钮操作编写此代码时,在 运行 时间
road123.setBackwardLanesCount(3);
我收到以下错误:
root:
road123: Markup element is already initiated and cannot be modified.Please use constructor without arguments,perform setup and finally call initialize() .function
您在 运行 时尝试使用参数化构造函数创建的任何对象都会遇到该错误。如果您使用简单的构造函数(只是“()”)创建对象,然后单独设置所有参数,您就不会 运行 陷入那个问题。检查 Anylogic API 以获取有关您正在使用的对象的特定信息,因为如果您使用简单的构造函数创建它,则有些要求您在设置所有参数后对该对象调用 .initiliaze() 。此外,如果您想在 运行 时将对象添加到屏幕,您需要将此代码添加到创建它的函数中:
@Override
public void onDraw( Panel panel, Graphics2D graphics) {
obj.drawModel(panel, graphics, true);
}
其中 obj 替换为您动态创建的对象的名称。
是否可以在 运行 时间内动态创建或修改对象?例如,单击按钮时,创建另一个按钮或更改道路的行数? 当我为按钮操作编写此代码时,在 运行 时间
road123.setBackwardLanesCount(3);
我收到以下错误:
root: road123: Markup element is already initiated and cannot be modified.Please use constructor without arguments,perform setup and finally call initialize() .function
您在 运行 时尝试使用参数化构造函数创建的任何对象都会遇到该错误。如果您使用简单的构造函数(只是“()”)创建对象,然后单独设置所有参数,您就不会 运行 陷入那个问题。检查 Anylogic API 以获取有关您正在使用的对象的特定信息,因为如果您使用简单的构造函数创建它,则有些要求您在设置所有参数后对该对象调用 .initiliaze() 。此外,如果您想在 运行 时将对象添加到屏幕,您需要将此代码添加到创建它的函数中:
@Override
public void onDraw( Panel panel, Graphics2D graphics) {
obj.drawModel(panel, graphics, true);
}
其中 obj 替换为您动态创建的对象的名称。