(target, percent)
| 524 | } |
| 525 | |
| 526 | var onframe = function (target, percent) { |
| 527 | // Find the range keyframes |
| 528 | // kf1-----kf2---------current--------kf3 |
| 529 | // find kf2 and kf3 and do interpolation |
| 530 | if (percent < cachePercent) { |
| 531 | // Start from next key |
| 532 | start = Math.min(cacheKey + 1, trackLen - 1); |
| 533 | for (i = start; i >= 0; i--) { |
| 534 | if (kfPercents[i] <= percent) { |
| 535 | break; |
| 536 | } |
| 537 | } |
| 538 | i = Math.min(i, trackLen - 2); |
| 539 | } else { |
| 540 | for (i = cacheKey; i < trackLen; i++) { |
| 541 | if (kfPercents[i] > percent) { |
| 542 | break; |
| 543 | } |
| 544 | } |
| 545 | i = Math.min(i - 1, trackLen - 2); |
| 546 | } |
| 547 | cacheKey = i; |
| 548 | cachePercent = percent; |
| 549 | |
| 550 | var range = (kfPercents[i + 1] - kfPercents[i]); |
| 551 | if (range === 0) { |
| 552 | return; |
| 553 | } else { |
| 554 | w = (percent - kfPercents[i]) / range; |
| 555 | } |
| 556 | if (useSpline) { |
| 557 | p1 = kfValues[i]; |
| 558 | p0 = kfValues[i === 0 ? i : i - 1]; |
| 559 | p2 = kfValues[i > trackLen - 2 ? trackLen - 1 : i + 1]; |
| 560 | p3 = kfValues[i > trackLen - 3 ? trackLen - 1 : i + 2]; |
| 561 | if (isValueArray) { |
| 562 | Animation._catmullRomInterpolateArray( |
| 563 | p0, p1, p2, p3, w, w * w, w * w * w, |
| 564 | getter(target, propName), |
| 565 | arrDim |
| 566 | ); |
| 567 | } else { |
| 568 | let value; |
| 569 | if (isValueColor) { |
| 570 | // value = LevelRenderer.Animation._catmullRomInterpolateArray( |
| 571 | // p0, p1, p2, p3, w, w * w, w * w * w, |
| 572 | // rgba, 1 |
| 573 | // ); |
| 574 | value = Animation.rgba2String(rgba); |
| 575 | } else { |
| 576 | value = Animation._catmullRomInterpolate( |
| 577 | p0, p1, p2, p3, w, w * w, w * w * w |
| 578 | ); |
| 579 | } |
| 580 | setter( |
| 581 | target, |
| 582 | propName, |
| 583 | value |
no test coverage detected