【问题标题】:How Do You Create Multiple, Simultaneous and Identical Animations in React Native?如何在 React Native 中创建多个、同时且相同的动画?
【发布时间】:2020-06-19 01:53:34
【问题描述】:

目前正在发生的事情

  • 有一张枪的图像。你点击枪,动画会用一颗子弹发射。
  • 你再次点击枪。原来的子弹动画消失了,新的子弹从枪里出来了。

我想要发生的事情

  • 您多次点击枪,看到多发子弹动画。在动画完成之前,原始子弹不会消失。

React Native 可以做到这一点吗?你能指出我正确的方向吗?

如果有帮助,这里是动画代码的 sn-p...

import React from 'react';
import { View, Animated, Easing, Dimensions, Image } from 'react-native'

let animatedValue = new Animated.Value(0)    

export let animateHappy = () => {
    console.log('animate happy run')
    animatedValue.setValue(0)
    Animated.timing(
        animatedValue,
        {
        toValue: 1,
        duration: 800,
        useNativeDriver: true,
        easing: Easing.linear
        }
    )
    .start()
}

export function HappyAnimation() {

    let windowWidth = Dimensions.get('window').width
    let windowHeight = (Dimensions.get('window').height)

    const movingMargin = animatedValue.interpolate({
        inputRange: [0, 1],
        outputRange: [0, (windowHeight/2.4)]
    })

    const movingXHappy = animatedValue.interpolate({
        inputRange: [0, 1],
        outputRange: [0, -90]
    })

return (
    <Animated.Image
    source={require('./assets/happy.png')} 
        style={{
        transform: [
        {translateY: (movingMargin)},
        {translateX: (movingXHappy)}
        ],
        zIndex: 0,
        marginLeft: 144,
        marginTop: (windowHeight*.35),
        height: 14,
        width: 14,}} 
    />
)
}

export default HappyAnimation

【问题讨论】:

    标签: react-native animation expo react-animated


    【解决方案1】:

    每次开枪时,您都需要实例化、渲染和触发一个新的 HappyAnimation 组件。考虑在动画结束后使用某种延迟来删除组件。

    【讨论】:

    • 谢谢!为了触发一个新的 HappyAnimation 组件,我想我会(1)创建一个数组,(2)在单击枪时向数组添加一个条目,(3)使用该数组来渲染组件(子弹) , 和 (4) 在动画结束时销毁子弹。我的方向正确吗?
    • 是的,完全正确!确保数组元素具有唯一的键标识符,以便在删除元素时不会重新呈现。
    • 我尝试了这种方法,但我被 Catch-22 卡住了。如果我使用状态来跟踪数组,那么每当我更新数组时,它都会导致所有项目符号重新渲染。如果我不使用状态,那么我添加到数组中,但它不会重新渲染。
    • 您必须为每个数组元素使用唯一的键。而不是索引。查看此线程以了解类似问题:stackoverflow.com/questions/39082597/…
    • 哦,是的,这很有道理!我会试一试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-21
    • 2018-05-04
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多