- From: Brian Birtles <bbirtles@mozilla.com>
- Date: Tue, 11 Dec 2012 12:50:03 +0900
- To: "public-fx@w3.org" <public-fx@w3.org>
Web animations minutes, 10 / 11 December 2012 Etherpad: https://etherpad.mozilla.org/ep/pad/view/ro.AY7jk02mILP/latest Present: Steve Block, Shane Stephens, Douglas Stockwell, Brian Birtles Agenda: 1. Status update 2. Time sources 3. Groups and time windows 4. Small fry 1. STATUS UPDATE ================ Brian: - Finished changes to KeyframeAnimation interfaces Steve: - Still working on adding TimeSources to polyfill, hung up on numerous bugs in existing logic. Shane: - Implemented color handling in polyfill, thinking about Timing Doug: - Implemented PathAnimationFunction in polyfill using SVGPathElement#getPointAtLength 2. TIME SOURCES =============== (Brian) Summarising where we got to last time: - We think separating time sources from parent ownership may be a useful separation of concerns for some use cases - and conflating the two may be counter-intuitive - Brian is concerned about overcomplicating v1 One possibility for v1: - TimedItem's have a timeSource property - points to a TimeSource - When a TimedItem is a child of a par/seq group, the timeSource property will point to that par/seq group - If in a future version we want to allow children to have separate parents and time source we add a parentGroup property then - Can you modify TimedItem.timeSource to re-parent? I *think* the answer might be no > No agreement here > Shane to write up something about Timeline -> TimeSource transformations 3. GROUPS AND TIME WINDOWS =========================== (Continuing discussion from last time) Brian: - How do we handle video? e.g. You have a seq container with a video, followed by some credits / music If the *user* presses pause / seeks the video (using the browser controls) you probably don't want the windowing behaviour. Need to think a bit more about how buffering works too (probably maps to a kind of pausing). Just flagging these as issues for now. Brian: - I think taking the time window approach depends on us being able to work out an API for representing it that feels simple. 4. SMALL FRY ============ (Shane) a. We floated the idea of implementation on webkit-dev and received some push-back. Notably, some thought that name shortening was "unwebby". Should we revert Anim → Animation, Func → Function? Or do we have "webby" examples of name shortening we can point to? Brian: I sympathise with this criticism. Proposed longification: Anim → Animation To address the concern about this being too long to type I wonder if we can extend Element with an animate method? (a la Raphaël) AnimGroup → AnimationGroup This happens to match the naming in Core Animation ParAnimGroup → ParGroup? SeqAnimGroup → SeqGroup? (These 'par' and 'seq' abbreviations already have established usage due to SMIL and I expect an element syntax would probably use these names. ParallelGroup is particularly error-prone to type especially for non-native English speakers.) TimingFunc → TimingFunction (you don't type this as often except when you access anim.timingFunction) AnimFunc → AnimationFunction (see below) 2012-11-29[Brian]: Made the above changes but I still want to get feedback about extending Element. Basically, it would let you do this: elem.animate({ opacity: '0%' }, 1).onend = function() { elem.parentNode.removeChild(elem); }; > Agreed, we'll put it in for now The other remaining renaming is that I'm not really happy with KeyframesAnimationFunction. How are these: (a) AnimationFunction -> AnimationAction KeyframeAnimationFunction -> KeyframeAction GroupAnimationFunction -> GroupAction PathAnimationFunction -> PathAction CustomAnimationFunction -> CustomAction Animation.animationFunction->action (b) AnimationFunction -> AnimationEffect KeyframeAnimationFunction -> KeyframeEffect GroupAnimationFunction -> GroupEffect PathAnimationFunction -> PathEffect CustomAnimationFunction -> CustomEffect Animation.animationFunction->effect (c) AnimationFunction -> AnimationEffect KeyframeAnimationFunction -> KeyframeAnimationEffect GroupAnimationFunction -> GroupAnimationEffect PathAnimationFunction -> PathAnimationEffect CustomAnimationFunction -> CustomAnimationEffect Animation.animationFunction->effect I'm leaning towards (c). > Agreed to go with (c) for now. Shane: One major piece of feedback in general is that the spec looks huge. It is, but the implementation size is small. The polyfill will help here, and a primer might too. One of our engineers is interested in maybe writing a primer. Good idea? > If one of us is bored we'll do it b. 6.13.2. point 3 really needs some explanatory text. > Steve to email Brian/Shane with corrected code for point three of calculating the unscaled iteration time c. does iterationStart = 0.5 & iterationCount = 2 cause (iteration + timeFraction) to start at 0.5 and sweep to 2.5? If so, why is iterationStart capped to iterationCount? Shane: I think we all accept that iterationCount should actually match the count of iterations, so I think it's OK to remove the requirement that iterationStart is capped to iterationCount. Should we remove the requirement that iterationStart > 0 too? Brian: Good question. I'm not sure. I've a feeling we generally try not to have negative times but I'm not quite sure why. How would an accumulate animation work in negative time? > Yes, it should sweep from 0.5 to 2.5. Yes we should remove the cap of iterationCount on iterationStart. No we shouldn't let it go below 0 (accumulate acts weirdly). Is there a use case for iterationStart > 1? > For now let iterationStart be limited to >= 0. [0, ∞) d. what should happen if timing parameters are changed after an animation is finished? case A var a = Anim(..., 2) // @ 3 seconds a.timing.duration = 4 case B var a = Anim(..., 2) // @ 5 seconds a.timing.duration = 4 case C var a = Anim(..., 2) // @ 3 seconds a.timing.iterationCount = 2 etc... Brian: We need to talk about this. It relates to having a stateless timing model. > We agree that stuff should come "back into scope" if the duration or iterationCount is changed. e. How about a root timeline with global time that underlies the document timelines? This would enable global-clock-synchronized animations (e.g. clock-tick animations and the like) at very little additional complexity cost. Brian: Sounds attractive for syncing animations with event timestamps. > Defer until we discuss some of the above stuff in [1-3] f. Why do we have startDelay but not between-iteration-delay or endDelay? Triggers partly address this. Brian: I think we discussed this and decided to defer it? > Yes. Defer until after v1. g. Should we expose reversing state? Should it be reversed / locallyReversed? Brian: I think this comes up somewhere else. I'd like to not have a special reversing flag since otherwise there are three places to check to determine if an animation is going backwards or not--playbackRate, direction, and reversed. > Agreed we want to implement reversing in terms of playbackRate (and fillMode) so we don't have three independent properties that control direction > Defer adding reversed property (getter to query direction) until we see some use cases h. Steve: Need to confirm desired behaviour for default animation start times within parent groups. Brian going off track talking about autoplay behaviour... - Need to consider if we can align better with HTMLMediaElement's autoplay behaviour - May be surprising that simply creating an Animation object kick starts it. A number of people have expressed surprise at this. - Seems to be agreement that 'new Animation' kick-starts an animation. Not sure exactly what state a new Animation should be in, but it probably shouldn't start until you call play(). If you want to create and start a simple animation then the proposed Element.animate method will be the way to go there. The issue here is when you have an Animation that DOESN'T have a start time and you add it to a par group - currently it uses the current iteration time of the parent as the start time - that's counter-intuitive when you're repeating since on the next iteration the animation starts part-way through - it also might be counter-intuitive when reversing since you won't see the animation until the prev iteration (although this may be unavoidable) > Steve to think about alternative behaviour One note to bear in mind is that the current behaviour was decided at a point where we expected Animations by default would be added to a document-level par group and this may no longer be the case. Next meeting: TBD @ https://etherpad.mozilla.org/Gwv1poQiPW Past meetings: http://www.w3.org/Graphics/fx/wiki/Web_Animations/Meetings
Received on Tuesday, 11 December 2012 03:50:46 UTC