Перейти к содержанию

Анимация

Анимация — обычный цикл: прочитайте снимок предыдущего tick(), измените переменные, нарисуйте кадр, затем вызовите tick(), чтобы показать результат и подготовить следующий ввод.

from drawzero import *

x = 50
while True:
    x += 5
    if x > 1100:
        x = 50
    clear()
    filled_circle(C.orange, (x, 300), 40)
    tick()

Движущиеся круги

Время

tick(r=1, *, fps=30) показывает рисунок один раз, затем ждёт и опрашивает события r раз. По умолчанию частота ограничена 30 FPS; tick(fps=60) задаёт 60, а tick(fps=0) убирает ограничение. Расчёты и рисование входят в интервал; ограничитель не ускоряет медленную работу. Отрицательные и неконечные частоты запрещены. Возвращается None.

tick(60) по-прежнему выполняет 60 опросов, а не задаёт 60 FPS и не обновляет ваши переменные 60 раз. Один публичный вызов публикует один накопленный кадр ввода. sleep(t=1) выполняет int(t * 30 + 0.5) опросов с ограничением 30 FPS, сохраняя отзывчивость окна и весь полученный ввод. tick(0) и sleep(0) показывают рисунок и очищают временные данные без опроса.

Очистка и следы

clear() очищает холст чёрным. fill(color, alpha=255) заливает цветом; меньшая прозрачность alpha постепенно гасит прежний рисунок, не стирая его сразу.

from drawzero import *

x = 0
while True:
    x = (x + 5) % 1000
    fill(C.black, alpha=30)
    filled_circle(C.cyan, (x, 500), 20)
    tick(fps=60)

fps(fontsize=24) рисует индикатор частоты кадров, но не задаёт её. quit() закрывает окно; последующее рисование не откроет его заново. Статический рисунок остаётся открытым до закрытия окна. Регулярно вызывайте tick(), чтобы обрабатывать конечную очередь бэкенда. В разделе клавиатура и мышь описаны снимки, события, отмена при потере фокуса и полные интерактивные примеры.