IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> React Native 中使用 Animated 实现物体下落动效 -> 正文阅读

[移动开发]React Native 中使用 Animated 实现物体下落动效

背景

学校留了一个作业,要用 React Native 做个游戏。我做的游戏涉及物体下落的效果,今天来尝试一下使用 React Native 的 Animated API 来实现这个效果。

实现

代码

比较简单,这次直接上代码吧:

import { useRef, useEffect } from 'react';
import { Animated, Dimensions } from 'react-native';

const WINDOW_WIDTH = Dimensions.get('window').width;
const WINDOW_HEIGHT = Dimensions.get('window').height;
const BOX_SIZE = WINDOW_WIDTH / 5;
const BOX_INIT_X = WINDOW_WIDTH/2 - BOX_SIZE/2;
const BOX_INIT_Y = WINDOW_WIDTH/2;
const BOX_FINAL_Y = WINDOW_HEIGHT - BOX_SIZE

export default function App() {
  const positionY = useRef(new Animated.Value(BOX_INIT_Y)).current

  useEffect(() => {
    // 使用 Animated.timing 设置动画
    Animated.timing(
      positionY,
      {
        toValue: BOX_FINAL_Y, // 在动画过程中把 positionY 变量改变到这个值
        duration: 3000,
        useNativeDriver: false // 注意这里,true 的性能会更好,但这里只能选 false,除非换一种方式使用 positionY
      }
    ).start();
  }, [])

  const boxStyle = {
    position: 'absolute',
    top: positionY, // positionY 用来指定盒子的 y 轴位置
    left: BOX_INIT_X,
    width: BOX_SIZE,
    height: BOX_SIZE,
    backgroundColor: 'red'
  }
  return <Animated.View style={boxStyle} />
}

需要注意的几点

  • useNativeDriver 这个选项写成了 false。如果选 true 的话会报错,因为 top 这个样式不支持 native driver。如果一定要用 useNativeDriver: true(性能会更好),可以考虑使用 transform参考链接
  • 由于 positionY 是一个 Animated.Value 类型,使用的时候只能直接用,比如 top: positionY,不能在其基础上进行运算,比如写成 top: positionY + 100 就会报错;
  • 上面用的是 useRef,但用 useState 来定义 positionY 也完全没问题。但即便 positionY 是个 state,在动画过程中也不会触发组件函数重新执行,因为 setPositionY 并没有被调用,其值的改变是通过 positionY.setValue() 实现的;

效果

效果如下:
请添加图片描述

参考链接

官方文档:Animated API

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-02-07 13:50:15  更:2022-02-07 13:50:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 14:45:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码