MCPcopy Create free account
hub / github.com/SuperMap/iClient-JavaScript / onframe

Method onframe

src/common/overlay/levelRenderer/Animation.js:526–615  ·  view source on GitHub ↗
(target, percent)

Source from the content-addressed store, hash-verified

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

Callers 10

AnimationSpec.jsFile · 0.80
_updateMethod · 0.80
echarts-en.min.jsFile · 0.80
echarts.min.jsFile · 0.80
echarts.simple.jsFile · 0.80

Calls 6

minMethod · 0.80
rgba2StringMethod · 0.80
_interpolateArrayMethod · 0.80
_interpolateNumberMethod · 0.80

Tested by

no test coverage detected