@@ -61,8 +61,8 @@ def __init__(
61
61
tail_length = len (pixel_object ) // 4
62
62
if bounce and ring :
63
63
raise ValueError ("Cannot combine bounce and ring mode" )
64
- self .reverse = reverse
65
64
self .bounce = bounce
65
+ self ._reverse = reverse
66
66
self ._initial_reverse = reverse
67
67
self ._tail_length = tail_length
68
68
self ._color_step = 0.95 / tail_length
@@ -89,6 +89,33 @@ def _set_color(self, color):
89
89
)
90
90
self ._computed_color = color
91
91
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
+
92
119
def draw (self ):
93
120
colors = self ._comet_colors
94
121
if self .reverse :
@@ -104,22 +131,22 @@ def draw(self):
104
131
105
132
self ._tail_start += self ._direction
106
133
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
+ ):
108
137
if self .bounce :
109
138
self .reverse = not self .reverse
110
- self ._direction = - self ._direction
111
139
elif self ._ring :
112
140
self ._tail_start = self ._tail_start % self ._num_pixels
113
141
else :
114
142
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
117
145
118
146
def reset (self ):
119
147
"""
120
148
Resets to the first state.
121
149
"""
122
- self .reverse = self ._initial_reverse
123
150
if self .reverse :
124
151
self ._tail_start = self ._num_pixels + self ._tail_length + 1
125
152
else :
0 commit comments