Javascript 在两条路径之间循环和变形SVG

Javascript 在两条路径之间循环和变形SVG,javascript,reactjs,svg,popmotion,react-pose,Javascript,Reactjs,Svg,Popmotion,React Pose,我使用and在React路由更改之间变形和转换SVG的两个路径 这是一个完美的例子 import posed from 'react-pose'; import { tween, easing } from 'popmotion'; import { interpolate } from 'flubber'; const pathIds = Object.keys(paths); const morphTransition = ({ from, to }) => tween({

我使用and在React路由更改之间变形和转换SVG的两个
路径

这是一个完美的例子

import posed from 'react-pose';
import { tween, easing } from 'popmotion';
import { interpolate } from 'flubber';

const pathIds = Object.keys(paths);

const morphTransition = ({ from, to }) =>
  tween({
    from: 0,
    to: 1,
    duration: 1000,
    ease: easing.easeInOut
  }).pipe(interpolate(from, to));

const Background = posed.path(
  pathIds.reduce((config, id) => {
    const path = paths[id].path;
    config[id] = {
      d: path,
      transition: morphTransition
    };
    return config;
  }, {})
);
其中路径定义为

const paths = {
  first: {
    path:
      'M 262.9,252.2 C 210.1,338.2 212.6,487.6 288.8,553.9 372.2,626.5 511.2,517.8 620.3,536.3 750.6,558.4 860.3,723 987.3,686.5 1089,657.3 1168,534.7 1173,429.2 1178,313.7 1096,189.1 995.1,130.7 852.1,47.07 658.8,78.95 498.1,119.2 410.7,141.1 322.6,154.8 262.9,252.2 Z',
    pathAlt:
      'M 262.9,252.2 C 210.1,338.2 273.3,400.5 298.5,520 323.7,639.6 511.2,537.2 620.3,555.7 750.6,577.8 872.2,707.4 987.3,686.5 1102,665.6 1218,547.8 1173,429.2 1128,310.6 1096,189.1 995.1,130.7 852.1,47.07 658.8,78.95 498.1,119.2 410.7,141.1 322.6,154.8 262.9,252.2 Z'
  },
  second: {
    path:
      'M 415.6,206.3 C 407.4,286.6 438.1,373.6 496.2,454.8 554.3,536.1 497,597.2 579.7,685.7 662.4,774.1 834.3,731.7 898.5,653.4 962.3,575 967.1,486 937.7,370 909.3,253.9 937.7,201.5 833.4,105.4 729.3,9.338 602.2,13.73 530.6,41.91 459,70.08 423.9,126.1 415.6,206.3 Z',
    pathAlt:
      'M 415.6,206.3 C 407.4,286.6 415.5,381.7 473.6,462.9 531.7,544.2 482.5,637.6 579.7,685.7 676.9,733.8 826.2,710.7 890.4,632.4 954.2,554 926.8,487.6 937.7,370 948.6,252.4 937.7,201.5 833.4,105.4 729.3,9.338 602.2,13.73 530.6,41.91 459,70.08 423.9,126.1 415.6,206.3 Z'
  },
  third: {
    path:
      'M 383.8,163.4 C 335.8,352.3 591.6,317.1 608.7,420.8 625.8,524.5 580.5,626 647.3,688 714,750 837.1,760.5 940.9,661.5 1044,562.3 1041,455.8 975.8,393.6 909.8,331.5 854.2,365.4 784.4,328.1 714.6,290.8 771.9,245.2 733.1,132.4 694.2,19.52 431.9,-25.48 383.8,163.4 Z',
    pathAlt:
      'M 383.8,163.4 C 345.5,324.9 591.6,317.1 608.7,420.8 625.8,524.5 595.1,597 647.3,688 699.5,779 837.1,760.5 940.9,661.5 1044,562.3 1068,444.4 975.8,393.6 884,342.8 854.2,365.4 784.4,328.1 714.6,290.8 820.3,237.2 733.1,132.4 645.9,27.62 422.1,1.919 383.8,163.4 Z'
  }
};
在路线更改上,效果是


但是,我如何在
路径[id].path
路径[id].pathAlt
之间循环和变形。例如,我试图在svg不断移动的情况下获得这个结果。

当您更改url时,找出哪个函数正在变形形状


然后在setInterval()中使用该函数在路径和路径alt之间交替,而不是在不同的路径之间交替。

在更改url时,找出哪个函数正在变形形状


然后在setInterval()中使用该函数在path和path alt之间切换,而不是在不同的路径之间切换。

我认为在这种情况下,
setInterval
不起作用。。。尝试了几种方法。也许你可以详细说明一下?我认为在这种情况下,
setInterval
不起作用。。。尝试了几种方法。也许你可以详细说明一下?