我有一个应用程序,是我用REACTIVE Native编写的.我试着用动画Api和图像为这个应用程序制作一个动画背景.动画只在一个方向上起作用.动画运行后,我希望它朝与之相反的方向运行.我是动画阿皮的新手,请帮帮我!我把代码留在下面.

import {
  ANIMATION_DURATION,
  ANIMATION_TO_VALUE,
  INPUT_RANGE_END,
  INPUT_RANGE_START,
  OUTPUT_RANGE_END,
  OUTPUT_RANGE_START,
} from "../constant";
import { DevHeight, DevWidth } from "../utils/device";
import React, { useEffect, useRef } from "react";
import {
  StyleSheet,
  Animated,Easing,
} from "react-native";
export const AnimatedBackground = ({backgroundImage,style}) => {

  const initialValue = 0;
  const translateValue = useRef(new Animated.Value(initialValue)).current;

  const translate = () => {
    translateValue.setValue(initialValue);
    Animated.loop(
      Animated.timing(translateValue, {
        toValue: ANIMATION_TO_VALUE,
        duration: ANIMATION_DURATION,
        easing: Easing.linear,
        useNativeDriver: true,
      })
    ).start();
  };

  useEffect(() => {
    translate();
  }, [translateValue]);

  const translateAnimation = translateValue.interpolate({
    inputRange: [INPUT_RANGE_START, INPUT_RANGE_END],
    outputRange: [OUTPUT_RANGE_START, OUTPUT_RANGE_END],
  });

  return (
    <Animated.Image
      resizeMode={'repeat'}
      style={[styles.background,{
        transform: [
          {
            translateX: translateAnimation,
          },
          {
            translateY: translateAnimation,
          },
        ],
      },style]}
      source={backgroundImage} />
  );
};

export default AnimatedBackground;

const styles = StyleSheet.create({
  container: {
    flex: 1,
  },
  background: {
    position: 'absolute',
    width: DevWidth*2,
    height: DevHeight*2,
    flex:1,
    top: 0,
    opacity: 0.2,
    transform: [
      {
        translateX: 0,
      },
      {
        translateY: 0,
      },
    ],
  },
});

推荐答案

const translate = () => {
  Animated.loop(
    Animated.sequence([
      Animated.timing(translateValue, {
        toValue: ANIMATION_TO_VALUE,
        duration: ANIMATION_DURATION,
        easing: Easing.linear,
        useNativeDriver: true,
      }),
      Animated.timing(translateValue, {
        toValue: initialValue,
        duration: ANIMATION_DURATION,
        easing: Easing.linear,
        useNativeDriver: true,
      }),
    ]),
  ).start();
};

请try 以上更新.

Reactjs相关问答推荐

在Reaction中单击时,按钮未按预期工作

如何避免react 使用ESLINTreact 挂钩/穷举-deps进行第一次呈现

如何在关闭和打开此 Select 输入时应用旋转效果?

捕获表单数据时的Reactjs问题

在构建或部署Reaction应用程序时出错

在每页上应用字体-NextJS

在继承值更改时重置react 挂钩窗体字段值

如何使用TouchStart/TouchEnd在Table ReactJS中交换位置?

面临 React 模式中点击外部条件的问题

React - 使用 React 显示错误和积极alert

@react-three/postprocessing 没有匹配的从 three.module.js 导出以导入WebGLMultisampleRenderTarget

如何在 nextjs 中单击按钮时动态导入和渲染组件?

如何将我的 ID 值传递给下一个组件?

使用 React.UseEffect 从 api 获取但我的清理返回不起作用

不能在我的代码中使用 .给我一个警告!有人知道解决方案吗?

父状态改变后子组件丢失状态

getAttribute 函数并不总是检索属性值

React useEffect hooks return () => cleanup() vs return cleanup

运行开发服务器时如何为 Vite 指定运行时目录

错误未捕获的错误:[App] 不是 组件. 的所有子组件必须是