- From: François REMY <fremycompany_pub@yahoo.fr>
- Date: Tue, 7 Aug 2012 11:10:19 +0200
- To: "Brian Birtles" <birtles@gmail.com>
- Cc: <public-fx@w3.org>
| How so? You can drop a sequenced or parallel group as soon as it becomes | inactive. The whole concept of becoming inactive is broken in the case of seekable items. Because a script could seek back the animation at any time (even when it finished) it could still return to an active state. | I guess you're saying we couldn't drop any of the children of the group | until the group itself finishes since you might want to seek the group? | That's a fair point but I think it's ok since I don't imagine there will | be additional long-running top-level groups created in the effects | timeline. What if one of the animations of the group has "fill: forwards"? This seems a pretty frequent case to me that authors would use a special transition to an effect and, in the same group, a long-running animation. I don't like to make guess about how API are going to be used by developers. | However, it's quite likely I might interactively want to reverse a UI | effect in progress. If you are using a fill mode and want to be able to reverse the animation at any point, the animation can't be optimized anyway. Also, if you're keeping a reference to the animation for your script to be able to reverse() the animation, it can't be removed from memory, either. You would still need to manage the memory on the JavaScript side with an AnimationEnd event. I think that you're merging the concept of "effect" and the concept of "state transition". An effect is optimizable because (1) it can't be modified (2) it leaves the element in the same state at the begining and at the end of the animation. Samples of effects includes "zoom-in zoom-out" or "blink/flash". A state transition doesn't leave the element in the same sate at the begining and at the end, and can be reversed if the state change is undone. A state transition can't be optimized for as long as it applies; however if final state is maintained elsewhere, the transition itself can be automatically discarded. The only memory-optimizable animations are animations which can't be manipulated by script at all. This is the model we should push by default; if developers need more control they'll need to take care of more implementation details. We should probably provide a better way to handle state transitions than just leave the developers alone on that matter. Something (roughly) like: /* define states (CSS, JS...) */ ul.select-box > li { transition-states: itemSelected(false), ...; } ul.select-box > li { transition-states: itemSelected(true), ...; } /* define transitions between states */ @transition-state itemSelected { when(false) { ... } when(true) { ... } from (false) to (true) { /* - 0% and 100% are from the 'when' states; - properties can be interpolated just using a timing (like transition: xxx) - when state changes from true to false, these keyframes are reversed - when state changes occurs during a transition: the transition is reversed in place if revelant if not revelant, the from state is the animated one - state transitions animations are discarded when 100% is reached */ } } In such case, developers only have to matter about "changing the state" and the magic happens elsewhere, with all optimizations still possible. François
Received on Tuesday, 7 August 2012 09:11:00 UTC