class AnimierteLinie(Animation): def __init__(self, start, ende, zeit_in_ms=None, geschwindigkeit=None, farbe=(0, 0, 0), dicke=1): if zeit_in_ms is None and geschwindigkeit is None: raise AttributeError("Entweder die Zeit oder die Geschwindigkeit müssen gesetzt sein.") self.linie = Linie(start, start, farbe=farbe, dicke=dicke) self.linie.verstecke() self.x_start = start[0] self.x_diff = ende[0] - start[0] self.y_start = start[1] self.y_diff = ende[1] - start[1] # Zeit berechnen if geschwindigkeit is not None: l = math.sqrt((ende[0] - start[0]) ** 2 + (ende[1] - start[1]) ** 2) zeit_in_ms = l / geschwindigkeit super().__init__(zeit_in_ms, aktualisiere=self._aktualisiere, animation_gestartet=self._gestartet) def _gestartet(self, wdh=False): self.linie.zeige() def _aktualisiere(self, dt): self.linie.setze_ende((self.x_start + self.x_diff * dt, self.y_start + self.y_diff * dt))