@@ -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,22 @@ 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 (
135+ self ._tail_start >= self ._right_side and not self ._reverse
136+ ):
108137 if self .bounce :
109138 self .reverse = not self .reverse
110- self ._direction = - self ._direction
111139 elif self ._ring :
112140 self ._tail_start = self ._tail_start % self ._num_pixels
113141 else :
114142 self .reset ()
115- if self . reverse == self . _initial_reverse and self . draw_count > 0 :
116- self .cycle_complete = True
143+
144+ self .cycle_complete = True
117145
118146 def reset (self ):
119147 """
120148 Resets to the first state.
121149 """
122- self .reverse = self ._initial_reverse
123150 if self .reverse :
124151 self ._tail_start = self ._num_pixels + self ._tail_length + 1
125152 else :
0 commit comments