AnyLogic - динамически создавать объекты во время моделирования

Можно ли динамически создавать объекты или изменять их во время выполнения? Например, при нажатии кнопки, при создании другой кнопки или изменении количества линий дороги? Когда я пишу этот код для кнопки Action, во время выполнения

road123.setBackwardLanesCount(3);

Я получаю ошибку ниже:

root: road123: элемент разметки уже инициирован и не может быть изменен. Пожалуйста, используйте конструктор без аргументов, выполните настройку и, наконец, вызовите initialize() .function

1 ответ

Решение

Вы получите эту ошибку с любым объектом, который пытаетесь создать во время выполнения с помощью параметризованного конструктора. Если вы создаете объект с помощью простого конструктора (просто "()"), а затем устанавливаете все параметры по отдельности, вы не столкнетесь с этой проблемой. Проверьте API Anylogic на предмет конкретной информации об объекте, который вы используете, потому что некоторые требуют, чтобы вы вызывали.initiliaze() для этого объекта после установки всех его параметров, если вы создали его с помощью простого конструктора. Кроме того, если вы хотите добавить объект на экран во время выполнения, вам нужно добавить этот код в функцию, которая его создает:

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

где obj заменяется именем объекта, который вы создали динамически.

Другие вопросы по тегам