@@ -61,8 +61,8 @@ def __init__(
6161 tail_length = len (pixel_object ) // 4
6262 if bounce and ring :
6363 raise ValueError ("Cannot combine bounce and ring mode" )
64- self .reverse = reverse
6564 self .bounce = bounce
65+ self ._reverse = reverse
6666 self ._initial_reverse = reverse
6767 self ._tail_length = tail_length
6868 self ._color_step = 0.95 / tail_length
@@ -89,6 +89,33 @@ def _set_color(self, color):
8989 )
9090 self ._computed_color = color
9191
92+ @property
93+ def reverse (self ):
94+ """
95+ Whether the animation is reversed
96+ """
97+ return self ._reverse
98+
99+ @reverse .setter
100+ def reverse (self , value ):
101+ self ._reverse = value
102+ self ._direction = - 1 if self ._reverse else 1
103+
104+ @property
105+ def ring (self ):
106+ """
107+ Ring mode.
108+ """
109+ return self ._ring
110+
111+ @ring .setter
112+ def ring (self , value ):
113+ if self .bounce and value :
114+ raise ValueError ("Cannot combine bounce and ring mode" )
115+ self ._ring = value
116+ self ._left_side = 0 if value else - self ._tail_length
117+ self .reset ()
118+
92119 def draw (self ):
93120 colors = self ._comet_colors
94121 if self .reverse :
@@ -104,22 +131,20 @@ def draw(self):
104131
105132 self ._tail_start += self ._direction
106133
107- if self ._tail_start < self ._left_side or self ._tail_start >= self ._right_side :
134+ if self ._tail_start < self ._left_side or ( self ._tail_start >= self ._right_side and not self . _reverse ) :
108135 if self .bounce :
109136 self .reverse = not self .reverse
110- self ._direction = - self ._direction
111137 elif self ._ring :
112138 self ._tail_start = self ._tail_start % self ._num_pixels
113139 else :
114140 self .reset ()
115- if self . reverse == self . _initial_reverse and self . draw_count > 0 :
116- self .cycle_complete = True
141+
142+ self .cycle_complete = True
117143
118144 def reset (self ):
119145 """
120146 Resets to the first state.
121147 """
122- self .reverse = self ._initial_reverse
123148 if self .reverse :
124149 self ._tail_start = self ._num_pixels + self ._tail_length + 1
125150 else :
0 commit comments