Hi Nicolas,

 

Read replies below...

 

From: Nicolas Richeton
Sent: Monday, January 19, 2009 9:33 AM



 

Thanks for sharing this document. It shows that there is a real demand for an 
animation API. Both your framework and SAT API are very close :

 

 

Animator.start(

    new Move(control, new Point(0, 0), new Point(100, 100),

             Easing.FAST, Easing.EaseInOutQuad);

  )

 

the same with SAT : 

 

new AnimationRunner().runEffect( 

            new MoveControlEffect( shell, 0,0, 100, 100, 4000, new ExpoOut(), 
null, null )   /* the last two parameters are onStop and onCancel runnable */

);

[Roland Tepp] Judging by the api samples, I’d say our only difference here is 
really in the verbosity of the naming conventions 
:) Of course the devil is always in the details ;) 

 

So it should be possible to take the best part of each API to build the nebula 
one. 

[Roland Tepp] I agree, we should at least discuss out API decisions and find 
the common ground to work from so that in case my appeal to open source my 
animation stuff does not get approved (or it takes too long to get approved), 
we might at least get the best ideas out of it ;)

 

Here are my comments based on your document :

 

- I like the way you use constants for duration and easing equations. Allowing 
optionnal parameters also makes declaration clearer. 

[Roland Tepp] Well, I like this style too :) 

 

Optional parameters are little tough though. Specially the cascading properties 
– I have not yet figured out a decenty way to do this without compicating the 
hell out of the internals of animation initialization code...

In my current implementation I have omited those. Not as pretty as I would 
like, but it serves the purpose for now...

 

- Combining effects with Sequence and Parallel is nice. It should be easy to 
implement on SAT too.

[Roland Tepp] Mhmh. What I did essentially was to create a tree of animations 
and made Parallel and Sequence responsible for firing frame events on the 
contained animations.

 

- You seem to use threads for animations which is what I did first, but now I 
use Display#timerExec() so everything is kept in the main thread (smaller 
footprint, frame skipping, no need to use async/sync exec). Another advantage 
is that control properties cannot change while you are calculating your next 
value.

[Roland Tepp] I do ... I tried the Display#timerExec(), but opted for a 
separate thread. (Actually –I use copied implementation of UIJob to do that, 
but I am currently considering changing the implementation to live entirely on 
the Java concurrency api).

 

This allowed me to keep ticking away frame events at a constant thread with a 
hope that if ever the ui became unresponsive, the animator would not be too 
severely affected (I realize that UIJob actually waits for the UI thread to 
complete before scheduling another frame, so this definetly needs to change).

 

Besides – My design was to keep the animation framework itself platform 
agnostic, so that I could essentially take the core api and use it to animate 
Swing or text based ui or do all kinds of unforseeable  nasty things with it 
that might have next to nothing to do with UI :)

 

- SAT supports cancelation for effects. This allows to redefine a transition 
while it's running. (required for replacing mouse wheel behavior by an 
animation for instance).

[Roland Tepp] So does my little animation framework .

In practice I’ve only done that once – I’ve found that it is much easier to 
design code in such a way, that transitions run their due course than go around 
cherry’picking animations to cancel and replace them with other animations... 
However, sometimes there is just no way around it  :)

 

We have now 3 API (with e4) we can get inspiration from. We should be able to 
create something very cool :)

[Roland Tepp] Oh ... I didn’t know that... I should probably thake a look at 
their api and features...

 

Thanks,

--

Nicolas

  _____  

jpeg | Roland Tepp | R&D | Work: +372 697-6597 | http://www.videobet.com/

This communication contains information which is privileged and confidential 
and is exclusively intended only for the individual or entity named above 
(recipient(s)). If you are not the intended recipient(s) or the person 
responsible for delivering it to the intended recipient(s), you are hereby 
notified that any review, disclosure, dissemination, distribution or 
reproduction of this communication message in any way or act is prohibited. If 
you receive this communication by mistake please notify the sender immediately 
and then destroy any copies of it. Please note that the sender monitors e-mails 
sent or received. Thank you.

<<image003.jpg>>

Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________
nebula-dev mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/nebula-dev

Reply via email to