[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
RE: [nebula-dev] Animation framework
|
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 :
new Move(control, new Point(0, 0), new Point(100, 100),
Easing.FAST, Easing.EaseInOutQuad);
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...
| 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.
|
Attachment:
smime.p7s
Description: S/MIME cryptographic signature