如何将ColorFilter与React-Native-Lottie一起使用?

时间:2020-04-29 11:21:29

标签: react-native expo lottie bodymovin

我似乎无法使colorFilter属性与我的.json文件一起使用。 没有错误,但是颜色显然没有改变。

<LottieView
     style={{
         width: 90,
         height: 90,
     }}
     colorFilters={
       [
         {
         keypath: "asdf",
         color: "#abcdef",
         }
       ]
     }
     source={badge.icon}
     loop={false}
/>

我正在使用BodyMovin从After Effects导入.json 但是我可以正确更改图层名称吗?如果不是,那到底为什么不起作用? enter image description here

3 个答案:

答案 0 :(得分:1)

我无法使用colorFilters,但是您可以尝试执行以下操作:


import myAnimation from "./../img/myAnimation.json";

在渲染部分中,将LottieView与导入一起使用,而不是与require inline一起使用

<LottieView        
  //source={require("./../img/radius.json")}
  source={myAnimation}
/>

现在您可以直接从json对象操作属性,例如,在这里我根据实际颜色(从黑色到白色或从白色到黑色)来操作颜色

myAnimation.layers[1].shapes[0].it[1].c.k = myAnimation.layers[1].shapes[0].it[1].c.k[0] == 0 ?  [1,1,1,1] : [0,0,0,1];

要找出所需的属性,请检查json,它不是很清楚,但是通过反复试验,您可以了解结构。

答案 1 :(得分:0)

这是一个悬而未决的问题,我已经打开了一个问题here,并将与开发人员一起希望解决此问题。目前,这可能是采用React Native的最大瓶颈。

答案 2 :(得分:0)

尝试使用 react native,它对我来说很好

    <LottieView
                style={style.heartLootie}
                source={require("../../assets/animations/favorite_animation.json")}
                progress={animationProgress}
                colorFilters={[
                    { keypath: "Red Heart", color: themeColors.PRIMARY },
                    { keypath: "Grey Heart", color: themeColors.SECONDARY },
                ]}
            />