add a generic color cycler and move blink to use it, and add a solid animator
This commit is contained in:
parent
3c5400fb0b
commit
bcf68c0a30
1 changed files with 36 additions and 7 deletions
|
|
@ -96,17 +96,46 @@ class Animation:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class Blink(Animation):
|
class ColorCycle(Animation):
|
||||||
def __init__(self, pixel_object, speed, color, color_off=BLACK):
|
"""
|
||||||
self.color_off = color_off
|
Animate a sequence of 1 or more colours, cycling at the specified speed.
|
||||||
self._state = False
|
"""
|
||||||
super(Blink, self).__init__(pixel_object, speed, color)
|
def __init__(self, pixel_object, speed, colors):
|
||||||
|
self.colors = colors
|
||||||
|
super(ColorCycle, self).__init__(pixel_object, speed, colors[0])
|
||||||
|
self._generator = self._color_generator()
|
||||||
|
|
||||||
def draw(self):
|
def draw(self):
|
||||||
self._state = not self._state
|
next(self._generator)
|
||||||
self.pixel_object.fill(self.color if self._state else self.color_off)
|
self.pixel_object.fill(self.color)
|
||||||
self.pixel_object.show()
|
self.pixel_object.show()
|
||||||
|
|
||||||
|
def _color_generator(self):
|
||||||
|
index = 0
|
||||||
|
while True:
|
||||||
|
index += 1
|
||||||
|
if index > len(self.colors):
|
||||||
|
index = 0
|
||||||
|
yield self.color
|
||||||
|
|
||||||
|
|
||||||
|
class Blink(ColorCycle):
|
||||||
|
def __init__(self, pixel_object, speed, color):
|
||||||
|
super(Blink, self).__init__(pixel_object, speed, [self.color, BLACK])
|
||||||
|
|
||||||
|
@Animation.color.setter
|
||||||
|
def color(self, value):
|
||||||
|
self.colors = [value, BLACK]
|
||||||
|
|
||||||
|
|
||||||
|
class Solid(ColorCycle):
|
||||||
|
def __init__(self, pixel_object, speed, color):
|
||||||
|
super(Solid, self).__init__(pixel_object, speed, [color])
|
||||||
|
|
||||||
|
@Animation.color.setter
|
||||||
|
def color(self, value):
|
||||||
|
self.colors = [value, BLACK]
|
||||||
|
|
||||||
|
|
||||||
class Comet(Animation):
|
class Comet(Animation):
|
||||||
def __init__(self, pixel_object, speed, color, tail_length=10):
|
def __init__(self, pixel_object, speed, color, tail_length=10):
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue