diff --git a/adafruit_led_animation/animation/chase.py b/adafruit_led_animation/animation/chase.py index f5168d7..a46a16a 100644 --- a/adafruit_led_animation/animation/chase.py +++ b/adafruit_led_animation/animation/chase.py @@ -96,7 +96,7 @@ def bar_colors(): bar_no += 1 colorgen = bar_colors() - self.pixel_object[:] = [next(colorgen) for _ in self.pixel_object] + self.pixel_object[:] = [next(colorgen) for _ in range(len(self.pixel_object))] if self.draw_count % len(self.pixel_object) == 0: self.cycle_complete = True diff --git a/adafruit_led_animation/animation/comet.py b/adafruit_led_animation/animation/comet.py index 7252c98..e562e49 100644 --- a/adafruit_led_animation/animation/comet.py +++ b/adafruit_led_animation/animation/comet.py @@ -120,14 +120,24 @@ def draw(self): colors = self._comet_colors if self.reverse: colors = reversed(colors) - for pixel_no, color in enumerate(colors): - draw_at = self._tail_start + pixel_no - if draw_at < 0 or draw_at >= self._num_pixels: - if not self._ring: - continue - draw_at = draw_at % self._num_pixels - - self.pixel_object[draw_at] = color + + pixels = self.pixel_object + start = self._tail_start + npixels = len(pixels) + if self._ring: + start %= npixels + for color in colors: + pixels[start] = color + start += 1 + if start == npixels: + start = 0 + else: + for color in colors: + if start >= npixels: + break + if start >= 0: + pixels[start] = color + start += 1 self._tail_start += self._direction