[Golist] tween classes versus all-in-one

Karsten Goetz KarstenGoetz at web.de
Mon Apr 21 12:35:31 PDT 2008


Hi Moses,

when i tried the repeater.cycles functionality the reverse worked -  
but it startet from the endposition, not from the currentposition - i  
think this is because it's build for cycles ( or i did not use it  
right ).
I've made a test with a button to reverse the motion. When it moved  
10 Pixels an i reversed it starts 10 Pixel under the endposition.

Anyway, I'm going on wet ground here. I'm not that coding-hero to  
build a new API and I agree with you in every point here. Tons of  
code, that sounds not to good.
On the other hand this is an very inviting situation, because Go  
gives a solid base, You're right , it quickly gets out of bounds.
Today I started with subclassing, but I soon realised  that I had to  
change to much that it's not readable anymore. If I would go on here,  
I had to copy LinearGo, PlayableGroup ( yes, I'm working with this  
one... ) and even would need some new events. First of all, if I go  
on, I wanted to ask for your permission to do that. It's open source  
- but your code and I won't get far without it. I don't want to build  
a new API, but I wan't to give this rewind thing a try.
It's more playing around with it, but if it comes to an interessting  
point i of course wan't to post it to the list - and the code will  
still base on yours.
Well, chances are that at last nothing much will happen - because of  
time and coding-skills.

thanks and lots of greetings

Karsten

PS.: in further mail you mentioned situations to set the useFrame  
param to true. What are these situations? I can think of playing a  
frame-timeline via script. are there other reasons, maybe performance?


Am 21.04.2008 um 20:15 schrieb Moses Gunesch:

> 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
>
> _______________________________________________
> 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



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


More information about the GoList mailing list