<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi Toby,<div><br></div><div>Yes that's a cool idea. We've discussed reversing sequences on this list in the past, search the archives for it. This was a feature that I left out of Fuse because it is so very involved (as you sort of point out with that list there!)</div><div><br></div><div>It did get me to thinking that one feature I could add to LinearGo would be a reverse-play option that would not necessarily require cycling forward first, as repeater.cycles currently does. The reason it's complex is that if I add that to LinearGo I also have to instruct everyone who subclasses linearGo to implement reverse functionality, something that seems like more of a custom feature than a regular one. It very closely ties into properties – getting and storing start values, etc.</div><div><br></div><div>There are other weirdnesses too such as, where does the delay go if you play a tween backward? From a standpoint of playing a tween it might should still go before the tween runs; from the standpoint of a sequence it should actually play at the end of the tween. One final weirdness: early-advance triggers (SequenceCA). To get those to work in reverse would require inspecting the previous sequence step and countering it with some kind of temporary early advance that works the other way... very complex indeed.</div><div><br></div><div>Because of all of these issues, I think that a better way to go would be to first create a coherent tween / sequence API (define the syntax), then make a helper function like generateReverseSequence() that would build a forward-play sequence with all of the parameters, delays and early advances built going backward. Even that would be a pretty big chore though.</div><div><br></div><div>I've had to apologize on this point since Fuse, which had a fast-forward but no rewind command. But in my opinion it's one of those things that is too much trouble for the number of times it would actually be used. I've tried to keep the Go framework stripped down to just foundational features and then let you guys do the work of adding all kinds of custom features.</div><div><br></div><div>So: Please feel free to prove me wrong and find an easy way to implement reverse sequences! </div><div>:-)</div><div><br></div><div>-m</div><div><br><div><div>On May 18, 2008, at 1:53 PM, toby wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Hi everyone,<br><br>Wouldn't it be really neat if you could define a sequence of tweens, <br>start it, and then - at any point in the sequence - just stop and yoyo? <br>I guess you would have to<br><br>a) store the values at which the sequence originally started<br>b) determine which part of the sequence is currently being executed<br>c) determine how much time of the planned duration of the currenty <br>sequence has passed<br>d) shorten the duration for the reverse element of the sequence accordingly<br>e) execute that reverse version of the currently executing sequence with <br>the shortened duration<br>f) execute reverse versions of all the previously executed parts of the <br>sequence<br><br>Been there, done that? Crazy? All nice and well, but?<br><br>Let me know what you think.<br><br>Bye,<br>Toby<br><br><br>_______________________________________________<br>GoList mailing list<br><a href="mailto:GoList@goasap.org">GoList@goasap.org</a><br><a href="http://goasap.org/mailman/listinfo/golist_goasap.org">http://goasap.org/mailman/listinfo/golist_goasap.org</a><br></blockquote></div><br></div></body></html>