Skip to content

Commit 3f73080

Browse files
committed
update TweenOneTicker tick priority timeout and interval
1 parent a90a20c commit 3f73080

File tree

2 files changed

+23
-8
lines changed

2 files changed

+23
-8
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "rc-tween-one",
3-
"version": "2.3.1",
3+
"version": "2.3.2",
44
"description": "tween-one anim component for react",
55
"keywords": [
66
"react",

src/ticker.js

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,21 @@
22
import requestAnimationFrame from 'raf';
33

44
const getTime = Date.now || (() => new Date().getTime());
5+
const sortObj = {
6+
interval: 1,
7+
timeout: 1,
8+
TweenOneTicker: 2,
9+
}
10+
const tickObjToArray = (obj) => (
11+
Object.keys(obj).map(k => ({
12+
key: k,
13+
func: obj[k],
14+
})).sort((a, b) => {
15+
const aa = a.key.split('_')[0];
16+
const bb = b.key.split('_')[0];
17+
return sortObj[bb] - sortObj[aa];
18+
})
19+
);
520
const Ticker = function () {
621
};
722
Ticker.prototype = {
@@ -19,21 +34,21 @@ Ticker.prototype = {
1934
};
2035
const p = Ticker.prototype;
2136
p.add = function (fn) {
22-
const key = `TweenOneTicker${this.tweenId}`;
37+
const key = `TweenOneTicker_${this.tweenId}`;
2338
this.tweenId++;
2439
this.wake(key, fn);
2540
return key;
2641
};
2742
p.wake = function (key, fn) {
2843
this.tickKeyObject[key] = fn;
29-
this.tickFnArray = Object.keys(this.tickKeyObject).map(k => this.tickKeyObject[k]);
44+
this.tickFnArray = tickObjToArray(this.tickKeyObject);
3045
if (this.id === -1) {
3146
this.id = requestAnimationFrame(this.tick);
3247
}
3348
};
3449
p.clear = function (key) {
3550
delete this.tickKeyObject[key];
36-
this.tickFnArray = Object.keys(this.tickKeyObject).map(k => this.tickKeyObject[k]);
51+
this.tickFnArray = tickObjToArray(this.tickKeyObject);
3752
};
3853
p.sleep = function () {
3954
requestAnimationFrame.cancel(this.id);
@@ -50,12 +65,12 @@ p.tick = function (a) {
5065
ticker.lastUpdate += ticker.elapsed;
5166
ticker.time = ticker.lastUpdate - ticker.startTime;
5267
const overlap = ticker.time - ticker.nextTime;
53-
if(overlap > 0 || !ticker.frame) {
68+
if (overlap > 0 || !ticker.frame) {
5469
ticker.frame++;
5570
ticker.nextTime += overlap;
5671
}
5772
// console.log(ticker.frame, ticker.nextTime, ticker.time)
58-
ticker.tickFnArray.forEach(func => func(a));
73+
ticker.tickFnArray.forEach(item => item.func(a));
5974
// 如果 object 里没对象了,自动杀掉;
6075
if (!ticker.tickFnArray.length) {
6176
ticker.sleep();
@@ -68,7 +83,7 @@ p.timeout = function (fn, time) {
6883
if (!(typeof fn === 'function')) {
6984
return console.warn('not function');// eslint-disable-line
7085
}
71-
const timeoutID = `timeout${Date.now()}-${timeoutIdNumber}`;
86+
const timeoutID = `timeout_${Date.now()}-${timeoutIdNumber}`;
7287
const startTime = this.time;
7388
this.wake(timeoutID, () => {
7489
const moment = this.time - startTime;
@@ -86,7 +101,7 @@ p.interval = function (fn, time) {
86101
console.warn('not function');// eslint-disable-line
87102
return null;
88103
}
89-
const intervalID = `interval${Date.now()}-${intervalIdNumber}`;
104+
const intervalID = `interval_${Date.now()}-${intervalIdNumber}`;
90105
let starTime = this.time;
91106
this.wake(intervalID, () => {
92107
const moment = this.time - starTime;

0 commit comments

Comments
 (0)