Artifact
72f8d5478bc48e21db471c695579c782709db71c3b6d401876a55fc9852914aa:
0000: 27 75 73 65 20 73 74 72 69 63 74 27 3b 0a 0a 69 'use strict';..i
0010: 6d 70 6f 72 74 20 7b 20 63 6c 6f 63 6b 20 7d 20 mport { clock }
0020: 66 72 6f 6d 20 27 2e 2e 2f 6d 61 69 6e 27 3b 0a from '../main';.
0030: 0a 65 78 70 6f 72 74 20 64 65 66 61 75 6c 74 20 .export default
0040: 63 6c 61 73 73 20 49 6e 74 65 72 76 61 6c 20 7b class Interval {
0050: 0a 0a 20 20 63 6f 6e 73 74 72 75 63 74 6f 72 28 .. constructor(
0060: 72 61 74 65 2c 66 75 6e 63 2c 6f 6e 29 20 7b 0a rate,func,on) {.
0070: 0a 20 20 20 20 74 68 69 73 2e 72 61 74 65 20 3d . this.rate =
0080: 20 72 61 74 65 3b 0a 20 20 20 20 74 68 69 73 2e rate;. this.
0090: 6f 6e 20 3d 20 6f 6e 3b 0a 20 20 20 20 74 68 69 on = on;. thi
00a0: 73 2e 63 6c 6f 63 6b 20 3d 20 63 6c 6f 63 6b 28 s.clock = clock(
00b0: 29 3b 20 2f 2f 20 6a 73 68 69 6e 74 20 69 67 6e ); // jshint ign
00c0: 6f 72 65 3a 6c 69 6e 65 0a 0a 20 20 20 20 74 68 ore:line.. th
00d0: 69 73 2e 70 61 74 74 65 72 6e 20 3d 20 5b 31 5d is.pattern = [1]
00e0: 3b 0a 20 20 20 20 74 68 69 73 2e 69 6e 64 65 78 ;. this.index
00f0: 20 3d 20 30 3b 0a 0a 20 20 20 20 74 68 69 73 2e = 0;.. this.
0100: 65 76 65 6e 74 20 3d 20 66 75 6e 63 20 3f 20 66 event = func ? f
0110: 75 6e 63 20 3a 20 66 75 6e 63 74 69 6f 6e 28 29 unc : function()
0120: 20 7b 20 7d 3b 0a 0a 20 20 20 20 69 66 20 28 74 { };.. if (t
0130: 68 69 73 2e 6f 6e 29 20 7b 0a 20 20 20 20 20 20 his.on) {.
0140: 74 68 69 73 2e 73 74 61 72 74 28 29 3b 0a 20 20 this.start();.
0150: 20 20 7d 0a 0a 20 20 7d 0a 0a 20 20 5f 65 76 65 }.. }.. _eve
0160: 6e 74 28 65 29 20 7b 0a 20 20 2f 2f 20 20 69 66 nt(e) {. // if
0170: 20 28 74 68 69 73 2e 70 61 74 74 65 72 6e 5b 74 (this.pattern[t
0180: 68 69 73 2e 69 6e 64 65 78 25 74 68 69 73 2e 70 his.index%this.p
0190: 61 74 74 65 72 6e 2e 6c 65 6e 67 74 68 5d 29 20 attern.length])
01a0: 7b 0a 20 20 20 20 20 20 74 68 69 73 2e 65 76 65 {. this.eve
01b0: 6e 74 28 65 29 3b 0a 20 20 2f 2f 20 20 7d 0a 20 nt(e);. // }.
01c0: 20 20 20 74 68 69 73 2e 69 6e 64 65 78 2b 2b 3b this.index++;
01d0: 0a 20 20 7d 0a 0a 20 20 73 74 6f 70 28 29 20 7b . }.. stop() {
01e0: 0a 20 20 20 20 74 68 69 73 2e 6f 6e 20 3d 20 66 . this.on = f
01f0: 61 6c 73 65 3b 0a 20 20 20 20 74 68 69 73 2e 69 alse;. this.i
0200: 6e 74 65 72 76 61 6c 2e 63 6c 65 61 72 28 29 3b nterval.clear();
0210: 0a 20 20 7d 0a 0a 20 20 73 74 61 72 74 28 29 20 . }.. start()
0220: 7b 0a 20 20 20 20 74 68 69 73 2e 6f 6e 20 3d 20 {. this.on =
0230: 74 72 75 65 3b 0a 20 20 20 20 74 68 69 73 2e 69 true;. this.i
0240: 6e 74 65 72 76 61 6c 20 3d 20 74 68 69 73 2e 63 nterval = this.c
0250: 6c 6f 63 6b 2e 63 61 6c 6c 62 61 63 6b 41 74 54 lock.callbackAtT
0260: 69 6d 65 28 74 68 69 73 2e 5f 65 76 65 6e 74 2e ime(this._event.
0270: 62 69 6e 64 28 74 68 69 73 29 2c 20 74 68 69 73 bind(this), this
0280: 2e 63 6c 6f 63 6b 2e 63 6f 6e 74 65 78 74 2e 63 .clock.context.c
0290: 75 72 72 65 6e 74 54 69 6d 65 29 2e 72 65 70 65 urrentTime).repe
02a0: 61 74 28 74 68 69 73 2e 72 61 74 65 2f 31 30 30 at(this.rate/100
02b0: 30 29 2e 74 6f 6c 65 72 61 6e 63 65 28 7b 65 61 0).tolerance({ea
02c0: 72 6c 79 3a 20 30 2e 31 2c 20 6c 61 74 65 3a 31 rly: 0.1, late:1
02d0: 7d 29 3b 0a 20 20 7d 0a 0a 20 20 6d 73 28 6e 65 });. }.. ms(ne
02e0: 77 72 61 74 65 29 20 7b 0a 20 20 20 20 69 66 20 wrate) {. if
02f0: 28 74 68 69 73 2e 6f 6e 29 20 7b 0a 20 20 20 20 (this.on) {.
0300: 20 20 76 61 72 20 72 61 74 69 6f 20 3d 20 6e 65 var ratio = ne
0310: 77 72 61 74 65 2f 74 68 69 73 2e 72 61 74 65 3b wrate/this.rate;
0320: 0a 20 20 20 20 20 20 74 68 69 73 2e 72 61 74 65 . this.rate
0330: 20 3d 20 6e 65 77 72 61 74 65 3b 0a 20 20 20 20 = newrate;.
0340: 20 20 74 68 69 73 2e 63 6c 6f 63 6b 2e 74 69 6d this.clock.tim
0350: 65 53 74 72 65 74 63 68 28 74 68 69 73 2e 63 6c eStretch(this.cl
0360: 6f 63 6b 2e 63 6f 6e 74 65 78 74 2e 63 75 72 72 ock.context.curr
0370: 65 6e 74 54 69 6d 65 2c 20 5b 74 68 69 73 2e 69 entTime, [this.i
0380: 6e 74 65 72 76 61 6c 5d 2c 20 72 61 74 69 6f 29 nterval], ratio)
0390: 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 ;. } else {.
03a0: 20 20 20 20 20 74 68 69 73 2e 72 61 74 65 20 3d this.rate =
03b0: 20 6e 65 77 72 61 74 65 3b 0a 20 20 20 20 7d 0a newrate;. }.
03c0: 20 20 7d 0a 0a 7d 0a }..}.