[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