[Golist] tween classes versus all-in-one

Moses Gunesch moses at goasap.org
Mon Apr 21 11:15:14 PDT 2008


K –

Reverse functionality already works if you set tween.repeater.cycles  
to any int but 1 (Repeater.INFINITE=0).

What I would recommend for all of this is a subclass of LinearGo that  
adds the functionality. Add a getter/setter called reverse, then in  
your subclass override the setup() method to flip the settings when  
playing in reverse. Note that that method factors for  
LinearGoRepeater.easeOnCycle and other params.

I agree with Joel that you're very quickly going to want to add Start  
Value functionality; but you can also add caching functionality that  
snapshot current values.

All of this is suggestive of a more complicated tween API, so I would  
warn you that by desiring this one complex feature you are going to  
end up developing a robust system to support it. I do suggest you use  
subclasses where possible, and create a different Sequence class (like  
SequenceCA branches from SequenceBase).

BTW: What Fuse did was, it did not cache start values and could not  
rewind (due to all of these complexities!), but it was able to Fast  
Forward. During FF what it did was actually play each action with 0  
duration, since remember in Fuse you could have wild card values etc.,  
and it used the special caveat in ZigoEngine called skipLevel to  
indicate that callbacks and events should be skipped during those 0- 
second tweens. ZigoEngine was programmed to literally set the values  
for 0-second tweens, instead of running the tween. So, Fuse had all of  
that extra functionality that Go does not, but even Fuse shied away  
from Rewind which simply would have added a ton of code – not worth it  
for just one feature.

Good luck!
m

On Apr 21, 2008, at 1:34 PM, Karsten Goetz wrote:

>
> ja, play reverse :-) There is this one line in LinearGo in update():
>
> _easeParams[0] = (currentTime - _startTime);
>
> I was hacking around a bit and you would cry if you could see what  
> I've done to it...
> Well, I think that reverse playing (not rewind? - my english,  
> arghhhh) could be done with:
>
> play rewind
> _easeParams[0] = _rewindTime - (currentTime - _startTime);
> play forward
> _easeParams[0] = _rewindTime + (currentTime - _startTime);
>
> _rewindtime is the time set when changed the direction. It works  
> ( but all lot of other thinks not, of course ;-) - but it maybe is a  
> different kind of concept and maybe belongs in an own class?
>
>
>
>
>
> Am 21.04.2008 um 18:54 schrieb Moses Gunesch:
>> oohhhh reverse eh. That is different.
>>
>> Maybe reverse play should be an open toggle option for tweens. It  
>> complexifies repeater options though, for sure...
>>
>> - m
>>
>>
>>
>> On Apr 21, 2008, at 11:43 AM, Karsten Goetz wrote:
>>
>>> Hi Moses,
>>>
>>> thank you for your reply.
>>> Just a quick question:
>>> Does skipTo really rewind, I mean does it change the play- 
>>> direction? I thougt it jumps to he new target and plays from there  
>>> on. Well, I'll check out again the new test-files, havn't done  
>>> this for a while.
>>> The rewind-function I had in mind should play the animation reverse.
>>>
>>>  I'll check that out, maybe it's that easy :-)
>>>
>>> Greetings
>>>
>>> Karsten
>>>
>>>
>>> Am 21.04.2008 um 17:18 schrieb Moses Gunesch:
>>>> K –
>>>> The reason that skipTo() was picked over a more complicated  
>>>> interface is that only tweens which have start and end can be  
>>>> rewound or fast-forwarded – not the case for physics animations  
>>>> necessarily. But skipTo() can easily be used to rewind and ff:
>>>>
>>>> Rewind:	skipTo(0);
>>>> FF: 		skipTo(tween.duration);
>>>>
>>>> Now, to the heart of your question which is skipTo + parallel or  
>>>> sequence.
>>>>
>>>> Here is how I think we could implement that functionality:
>>>> 1. PlayableBase should have a read-only duration getter that  
>>>> returns the max time of all children
>>>> 2. SequenceBase might also need a duration getter that sums all  
>>>> step durations.
>>>> 3. SequenceBase should get skipToTime() functionality.  
>>>> Alternatively skipTo could use time and the secondary method  
>>>> could be skipToIndex().
>>>>
>>>> The time-based one is easy to implement; you just run a sum of  
>>>> durations on each step and when the sum exceeds the time you back  
>>>> it up one and run skipTo() on the step with the remainder.
>>>>
>>>> To implement a slider you could calculate a percentage against  
>>>> the Sequence's total duration.
>>>>
>>>> Does this address your questions? I'm happy to help you add these  
>>>> features to the utils or, give it a shot and post your version!
>>>>
>>>> - moses
>>>>
>>>> PS: Go is naturally time-based. Do not use the useFrames option,  
>>>> there is nothing simpler or more intuitive about it. It is a  
>>>> specialty option that should be saved for special cases where you  
>>>> have to process things in frames.
>>>>
>>>> PPS: Also be sure to take a look at the GoTestBase class included  
>>>> (there's also a GoFlexTestBase). It sets up buttons that let you  
>>>> perform all the play controls on a tween (see the included  
>>>> examples in the com.mosesSupposes.go.tests package). When you run  
>>>> the line super.addButtonUI(), the second param defines the  
>>>> skipTo() amount for that test, and will appear on the button.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On Apr 21, 2008, at 5:12 AM, Karsten Goetz wrote:
>>>>> Hi Coders,
>>>>>
>>>>> I like the idea to seperate into different tweens.
>>>>> I tried to do something like this a few weeks ago - but the work  
>>>>> is not finished and has some bugs.
>>>>> I've submited them anyway to SVN in my package ( KarstenGoetz ).  
>>>>> If you are interessted, have a look.
>>>>>
>>>>> I tried to set up some "interactive test", too ( not post to  
>>>>> svn ).
>>>>> What I mean is some more  complex animation that starts on  
>>>>> mouseover, rewinds on mouseout and perhaps do
>>>>> some new animation on click from the given position... in other  
>>>>> words, i played around.
>>>>> I don't have results from this session but some questions:
>>>>> - how would you arrange such an animation?
>>>>> - I sometimes miss a more timebased handling of tweening. We can  
>>>>> play forward and skipTo - but what about rewind a tween and  
>>>>> rewindTo?
>>>>> Imagine a slider, representing the animation time, you drag it  
>>>>> and a tween, group or sequence would calculate the animation at  
>>>>> this time.
>>>>>
>>>>> I get a bit confused about this things, so I want to ask you.  
>>>>> For me LinearGo and PlayableGroup ( and Sequence ) are leaving  
>>>>> the "lightweight"-zone ( I'm pointing here to the  
>>>>> implementations of Repeater and useFrames - all absolutly  
>>>>> nessesary, but I start to miss the basic thing... ).
>>>>> I think a basic Tween ( LinearGo, or maybe a new Class called  
>>>>> TimeGo?;- ) should be more timeline-like. In my point of view  
>>>>> it's not far away and I started to create some experients on  
>>>>> that to try if its possible. I think it is  - but is it a way?  
>>>>> Maybe I'm  totally wrong? Maybe I've missed some tools in Go  
>>>>> that doing this stuff.
>>>>>
>>>>> Lots of greetings
>>>>>
>>>>> Karsten
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Am 17.04.2008 um 18:56 schrieb Moses Gunesch:
>>>>>> On Apr 17, 2008, at 10:41 AM, Tollman Owens wrote:
>>>>>>> I can only see the benefit of doing all of the extra  
>>>>>>> functionality in
>>>>>>> external classes for legibility, because you are going to
>>>>>>> get the weight when you do the import, so being able to save  
>>>>>>> file size
>>>>>>> is not really an issue, please correct me is i am wrong.
>>>>>>
>>>>>> It's not about legibility, it's about modularity.
>>>>>>
>>>>>> Think about it from an Object-Oriented and Open-Source Sharing
>>>>>> perspective: Whoever extends LinearGo with the best (simplest,  
>>>>>> most
>>>>>> coherent, most functional) set of basic tween classes will be
>>>>>> providing a bedrock foundation for everyone else.
>>>>>>
>>>>>> The most attractive set of basic tween classes put out by one  
>>>>>> of you
>>>>>> should end up receiving a VERY high adoption rate, because this  
>>>>>> set of
>>>>>> basic tween classes can be repurposed for ANY parser or more  
>>>>>> complex
>>>>>> system. No one has so far realized this and picked up the  
>>>>>> gauntlet
>>>>>> but, I'm freely handing it to all of you for the taking. So go  
>>>>>> ahead,
>>>>>> get famous if you want. ;-)
>>>>>>
>>>>>> Such a set is not included in GoASAP in order to maintain purity:
>>>>>> Go is a base system that doesn't propose any specific syntax,  
>>>>>> not even
>>>>>> for tween classes, because there are so many approaches to that
>>>>>> interface.
>>>>>>
>>>>>>
>>>>>> A basic list of tweens might be something like this:
>>>>>>   * A DisplayObject tween
>>>>>>   * A generic any-object/ any-property multiple-value tween
>>>>>>   * A generic any-object/ any-property multiple-value tween
>>>>>>   * A ColorTransform tween (could subclass the multi-value tween)
>>>>>>   * A BitmapFilter tween
>>>>>> 	(could be several of them since some filters are multi-value)
>>>>>>   * A Bezier-arc tween
>>>>>>
>>>>>> Just my two cents.
>>>>>>
>>>>>> moses
>>>>>>
>>>>>> _______________________________________________
>>>>>> GoList mailing list
>>>>>> GoList at goasap.org
>>>>>> http://goasap.org/mailman/listinfo/golist_goasap.org
>>>>>
>>>>> ------------------------
>>>>> Karsten Goetz
>>>>> Flashprogrammierung
>>>>>
>>>>> Bernstorffstr. 120
>>>>> 22767 Hamburg
>>>>>
>>>>> Tel:       +49 40 43 09 91 07
>>>>> Mobil:   0173 57 14 984
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> GoList mailing list
>>>>> GoList at goasap.org
>>>>> http://goasap.org/mailman/listinfo/golist_goasap.org
>>>>
>>>> _______________________________________________
>>>> GoList mailing list
>>>> GoList at goasap.org
>>>> http://goasap.org/mailman/listinfo/golist_goasap.org
>>>
>>> ------------------------
>>> Karsten Goetz
>>> Flashprogrammierung
>>>
>>> Bernstorffstr. 120
>>> 22767 Hamburg
>>>
>>> Tel:       +49 40 43 09 91 07
>>> Mobil:   0173 57 14 984
>>>
>>>
>>>
>>> _______________________________________________
>>> GoList mailing list
>>> GoList at goasap.org
>>> http://goasap.org/mailman/listinfo/golist_goasap.org
>>
>> _______________________________________________
>> GoList mailing list
>> GoList at goasap.org
>> http://goasap.org/mailman/listinfo/golist_goasap.org
>
> ------------------------
> Karsten Goetz
> Flashprogrammierung
>
> Bernstorffstr. 120
> 22767 Hamburg
>
> Tel:       +49 40 43 09 91 07
> Mobil:   0173 57 14 984
>
>
>
> _______________________________________________
> GoList mailing list
> GoList at goasap.org
> http://goasap.org/mailman/listinfo/golist_goasap.org

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://goasap.org/pipermail/golist_goasap.org/attachments/20080421/037fbc0e/attachment-0001.html 


More information about the GoList mailing list