Я считаю, что HTML холст позволяет изменять элементы
Это не делает. Вы можете проверить мой HTML canvas tutorial, чтобы увидеть, как вы рисуете движущийся мяч; вы протираете экран и рисуете новый круг в нужном месте.
Вы можете нарисовать простые фигуры на холсте во всех pyglet, pygame, QT, Tkinter, wxPython и cairo.
Как правило, у вас будут объекты, называемые «спрайты» или «фигуры», которые представляют объекты, нарисованные на экране, и вы будете хранить их все в контейнере. Тогда библиотека или фрейм будет в каждом кадре отображать их все на холст.Таким образом, пользователю (вам) кажется, что вы можете изменять объекты на экране; вы задаете координаты x и y шара, а в следующем кадре отображается. Однако на низком уровне все протирается и снова перерисовывается.
Для интенсивной вычислительной анимации будет использоваться метод, называемый double-buffering, в результате чего растровое изображение в памяти будет изменено вместо одного на экране, а затем процесс рисования просто будет скопировать это растровое изображение на экран.
изменить элемент в списке, а затем создать новый холст, который, похоже, будет иметь значительные накладные расходы.
Все рамки упомянутых выше даст вам хорошую абстракцию для списка объектов рисовать, так что вам не нужно будет поддерживать его вручную, и вы можете запрограммировать, как если спрайты/формы вы» вы можете напрямую перемещаться по экрану, хотя они действительно не на низком уровне.
«вы протираете экран и нарисовываете новый круг в нужном месте» - хотя это правда, это не настоящая проблема с точки зрения производительности. я сделал что-то подобное, и большую часть времени идет на сравнение изображений (оценка пригодности), а не на рисование. штраф не должен быть слишком большим. – stefs
Я не говорил, что это проблема производительности, просто вы не можете изменять элементы, которые находятся на холсте; вы должны опираться на все, что изменилось. – llimllib