[webkit-dev] Proposed Timer API
Chris Marrin
cmarrin at apple.com
Fri Oct 3 11:01:05 PDT 2008
On Oct 2, 2008, at 6:13 PM, Maciej Stachowiak wrote:
>
> On Oct 2, 2008, at 6:01 PM, Cameron McCormack wrote:
>
>> Hi Maciej.
>>
>> Cameron McCormack:
>>>> If possible, it would be nice if there could be some degree of
>>>> compatibility between this proposed API and the one in SVG Tiny
>>>> 1.2:
>>>>
>>>> http://dev.w3.org/SVG/profiles/1.2T/publish/svgudom.html#svg__SVGTimer
>>
>> Maciej Stachowiak:
>>> I considered that, but I don't like the fact that it makes the
>>> common
>>> zero-delay continuation callback case into three lines of code
>>> instead
>>> of one, for what I think is no practical benefit.
>>
>> Justin’s proposed API seems to need four lines for that case:
>>
>> var t = new Timer();
>> t.repeatCount = 1;
>> t.addEventListener('timercomplete', function() { … }, false);
>> t.start();
>>
>> compared with the three for SVG’s timer:
>>
>> var t = createTimer(0, -1);
>> t.addEventListener('SVGTimer', function() { … }, false);
>> t.start();
>
> See my proposal on another thread, which makes this:
>
> startTimer(0, false, function() { ... });
>
I really like the idea of a Timer object. It would allow you to
separate creation from starting, allows you to pause and add other
API's to the interface. Can the constructor be used to simplify the
creation:
var t = new Timer(0, false, function() { ...});
which would start the timer immediately, as in your example. Or you
could do:
var t = new Timer(function() { ... });
...
t.startOneShot(1.76);
etc.
And you could easily add animation or media API's for synchronization:
var t = new Timer(1.76, function() { ... }); // when the timer is
triggered, it will run for 1.76 seconds
var transition = window.getTransitionForElement(element, "left");
transition.trigger(t);
...
element.style.left = "100px";
This would cause the timer to start when the left transition starts
and fire its event 1.76 seconds later.
-----
~Chris
cmarrin at apple.com
More information about the webkit-dev
mailing list