Ответы пользователя по тегу Анимация
  • Как остановить 2d анимацию?

    @QPDEH
    Даже не джун, любитель
    Вот держи. Пришлось малость колхозить, но работает
    def motion(angle):
        x1 = (c.coords(f)[0] + c.coords(f)[2]) / 2#координата x центра первого круга
        y1 = (c.coords(f)[1] + c.coords(f)[3]) / 2#координата y центра первого круга
        x2 = (c.coords(f1)[0] + c.coords(f1)[2]) / 2#координата x центра второго круга
        y2 = (c.coords(f1)[1] + c.coords(f1)[3]) / 2#координата y центра второго круга
        if not math.floor(((x2-x1)**2+(y2-y1)**2)**0.5) == RADIUS2 + RADIUS3:#Вычисляем расстояние между центрами окружностей и если оно равно сумме радиусов окружностей то выходим. Пришлось сделать math.floor() т.к. иногда не сходятся
            angle = angle + 0.1
            c.coords(f, coords(angle))
            root.after(50, lambda: motion(angle))
     
    def motion_1(angle):
        x1 = (c.coords(f)[0] + c.coords(f)[2]) / 2#тоже самое
        y1 = (c.coords(f)[1] + c.coords(f)[3]) / 2
        x2 = (c.coords(f1)[0] + c.coords(f1)[2]) / 2
        y2 = (c.coords(f1)[1] + c.coords(f1)[3]) / 2
        if not math.floor(((x2-x1)**2+(y2-y1)**2)**0.5) == RADIUS2 + RADIUS3:
            angle = angle - 0.1
            c.coords(f1, coords_1(angle))
            root.after(50, lambda: motion_1(angle))
    Ответ написан
    1 комментарий