- From: Brian Birtles <bbirtles@mozilla.com>
- Date: Fri, 15 Mar 2013 13:46:17 +0900
- To: "public-fx@w3.org" <public-fx@w3.org>
Web animations minutes, 14 / 15 March 2013
Etherpad: https://etherpad.mozilla.org/ep/pad/view/ro.0iJTmSakBaB/latest
Present: Dmitry, Doug, Shane, Steve, Brian
Agenda:
1. Status update
2. The specified TimingDictionary
3. Reverse behaviour
4. Is it add or accumulate?
5. How do we implement accumulating?
6. Clarifying the mapping re: to-animation
7. getCurrentPlayers/getCurrentAnimations
1. STATUS UPDATE
================
Brian:
- Merged 'separate-api' back to 'default'
- Still rewriting the spec, currently up to 'Animation values'
(section 17)
- Is GroupedAnimationEffect going away?
Shane: Yes, I think so. But we should consider either allowing
KeyFramesAnimationEffect to target multiple properties or allow an
Animation to have a list of effects.
> Brian to investigate what to do in place of GroupedAnimationEffect
- Ok to rename SplineTimingFunction to CubicBezierTimingFunction?
> Seems ok
- Interesting email thread for the week:
http://lists.w3.org/Archives/Public/public-webapps/2013JanMar/0634.html
- reflections on IndexedDB API
- Dirk Schulze is offering to help port our changes to respec to the
current version on github (v3) -- yay! Thanks Dirk!
Doug:
- Polyfill stuff... naming is closer to spec.
- Polyfill now works in Firefox and IE9/10!
Steve
- Fixed a few polyfill bugs
- Added basics of media integration
- Merged new test framework
Shane
- Polyfill stuff
- new test framework works in firefox and IE9/10
- getting close to switching over to new framework
2. THE 'specified' TIMING DICTIONARY
====================================
Recap: dictionaries in WebIDL are static. So we can't just reuse the
TimingDictionary interface for representing timing parameters on TimedItem.
Options:
(a) Make a Timing interface to mirror the dictionary but which is live
(b) Put the members directly onto TimedItem
(c) Put the members directly onto TimedItem and put computed timing in
another object - ComputedTiming
(d) (a) and (c) -- i.e. put specified and computed timing in other
interfaces
(e) Have a method to update specified timing:
updateSpecifiedTiming(dictionary)
(f) Extend WebIDL (+1)
(g) Sidestep the problem with a different WebIDL construct or
ECMAScript-specifics - see
http://www.w3.org/TR/geolocation-API/#position_options_interface and
http://www.w3.org/TR/2010/WD-WebIDL-20101021/#Callback
> Brian to email Cameron to see what our options are
> Shane to follow up with Elliot and others
3. REVERSE BEHAVIOUR
====================
Recap: We had/have Player.reverse() but Brian thinks its useful to have
a means of reversing something so that if it has already finished, it
begins reversing from the end. So, if it finished 3s ago, it doesn't
wait 3s, but starts reversing straight away. If it's in the middle of
its animation, it just reverses from its current point.
But that makes Player depend on its source content which currently its not.
Strawman proposal:
Add methods that are explicitly dependent on the source content?
Player.reverseSource()?
Player.pauseSource()?
That might remove the expectation that calling reverseSource() twice is
a no-op even after the item has finished.
pauseSource() if added could provide the previously defined behavior
that doesn't pause outside the source's active interval.
if (player.currentTime > player.source.endTime) {
player.currentTime = player.source.endTime;
}
player.playbackRate *= -1;
➙ Opposition to adding reverseSource. Brian to add an issue about the
possibility of adding this method. Will revisit based on usage in the wild.
4. IS IT ‘add’ OR ‘accumulate’?
===============================
‘accumulateOperation’ is the name of the property that describes how
animation values are calculated from iteration values. ‘Add’ is the name
of the operation used.
5. HOW DO WE IMPLEMENT ACCUMULATING?
======================================
Accumulate to be a boolean that is implemented inside Effect (i.e.
before the value gets sent to the compositor stack).
6. CLARIFYING THE MAPPING RE: TO-ANIMATION
==========================================
If I have:
var anim = new Animation({ top: '200px' }, 3);
do I get a to-animation? Yes: ['200px', '200px'] merge
What about
var anim = new Animation({ top: [ '200px' ] }, 3); ? No: ['0px, '200px']
or
var anim = new Animation({ top: [ '0', '200px' ] }, 3); ? No: ['0px',
'200px']
new Animation({ top: [ '200px' ] , operator: "merge"}, 3); ← not a
to-animation
new Animation({ top: [ '200px' ] , operator: "add"}, 3); ← adds 200px
over 3 seconds
Brian's proposal: Change this so that we flat-extend out to 0 and 1 from
the closest specified keyframe (i.e [{0.6: '200px'}] acts like ['200px',
'200px'] and [{0.3: '100px'}, {0.6: '200px'}] becomes [{0: '100px'},
{0.3: '100px'}, {0.6: '200px'}, {1: '200px'}]
Brian: Looking at CSS, it fills in 0% and 100% (if needed) with a
keyframe that corresponds to the current computed value of the property.
I think we should match CSS here.
➙ Decided we will try to mimick CSS here. Basically, if there is no
keyframe at the endpoints then the animation effect generates the
suitable value and tells the compositor to use a merge operation.
Basically, it will do what CSS does here.
Revisiting earlier examples:
var anim = new Animation({ top: '200px' }, 3);
Gives you:
{ 1: '200px' }
Which will perform a merge (since there's no 0)
But:
var anim = new Animation({ top: '200px', operation 'add' }, 3);
Still gives you a merge (since there's no 0-keyframe rule)
> Continue next week
7. getCurrentPlayers/getCurrentAnimations
=========================================
> Next week
Next meeting: Thurs Mar 21 15:00 PST / Fri 22 Mar 10:00 AEDST / Fri 22
Mar 08:00 JST @ https://etherpad.mozilla.org/pHPfOqZA75
Past meetings: http://www.w3.org/Graphics/fx/wiki/Web_Animations/Meetings
Received on Friday, 15 March 2013 04:51:01 UTC