@@ -382,13 +382,18 @@ class Chase(Animation):
382
382
:param pixel_object: The initialised LED object.
383
383
:param int speed: Animation speed rate in seconds, e.g. ``0.1``.
384
384
:param color: Animation color in ``(r, g, b)`` tuple, or ``0x000000`` hex format.
385
- :param size: Number of pixels per chase group.
386
- :param reverse: Reverse direction.
385
+ :param size: Number of pixels to turn on in a row.
386
+ :param spacing: Number of pixels to turn off in a row.
387
+ :param reverse: Reverse direction of movement.
387
388
"""
388
389
389
390
# pylint: disable=too-many-arguments
390
- def __init__ (self , pixel_object , speed , color , size = 3 , reverse = False ):
391
- self ._size = size * 2
391
+ def __init__ (self , pixel_object , speed , color , size = 1 , spacing = 3 , reverse = False ):
392
+ self ._size = size
393
+ self ._spacing = spacing
394
+ self ._repeat_width = size + spacing
395
+ self ._num_repeats = len (pixel_object ) // self ._repeat_width
396
+ self ._overflow = len (pixel_object ) % self ._repeat_width
392
397
self ._direction = 1
393
398
self ._reverse = reverse
394
399
self ._n = 0
@@ -405,14 +410,14 @@ def reverse(self):
405
410
def reverse (self , value ):
406
411
self ._reverse = value
407
412
self ._direction = - 1 if self ._reverse else 1
413
+ print ("Set Reverse" , self ._reverse , self ._direction )
408
414
409
415
def draw (self ):
410
- self ._n = (self ._n + 1 ) % self ._size
411
- n = self ._n
412
- size = self ._size
413
- half_size = size // 2
414
- for i in range (len (self .pixel_object )):
415
- self .pixel_object [i ] = self .color if ((i + n ) % size ) < half_size else (0 , 0 , 0 )
416
+ self ._n = (self ._n + self ._direction ) % self ._repeat_width
417
+ self .pixel_object .fill ((0 , 0 , 0 ))
418
+ for n in range (self ._n , self ._n + self ._size ):
419
+ num = self ._num_repeats + (1 if n < self ._overflow else 0 )
420
+ self .pixel_object [n ::self ._repeat_width ] = [self .color ] * num
416
421
self .show ()
417
422
418
423
0 commit comments