HarmonyOS应用《玄象》开发实战:掷钱动画:animateTo + 缓动曲线的物理感模拟

阅读时长:约 18 分钟 | 难度:★★★★☆ | 篇章:第 5 篇 · 周易易学模块

对应源码:entry/src/main/ets/pages/yijing/CastDivinationPage.ets

前言

玄象项目起卦页在模拟三变时,用 animateTo 显式动画驱动"铜钱"的旋转与翻转,模拟传统掷钱起卦的物理感。动画通过 Curve.FastOutSlowIn 缓动曲线实现"加速抛出→减速落地"的视觉反馈。本篇将深入剖析玄象项目掷钱动画的实现:从 animateTo 显式动画、Curve 缓动曲线选择、平移动画与旋转动画的组合,到动画完成回调。掌握这套动画模拟方法论,您就能为任何 HarmonyOS 应用打造物理感的交互反馈。

提示:animateTo 是 ArkUI 的显式动画 API,比 animation 修饰器更灵活,支持动画完成回调。

一、animateTo 显式动画

1.1 animateTo 基本用法

typescript 复制代码
animateTo({ duration: 500, curve: Curve.FastOutSlowIn }, () => {
  this.coinY = 200;  // 铜钱向下移动
  this.coinRotation = 360;  // 铜钱旋转
});

二、掷钱动画实现

2.1 状态变量

typescript 复制代码
@State coinY: number = -100;
@State coinX: number = 0;
@State coinRotation: number = 0;
@State coinOpacity: number = 0;

2.2 掷钱动画

typescript 复制代码
private throwCoin(): void {
  // 重置位置
  this.coinY = -100;
  this.coinRotation = 0;
  this.coinOpacity = 1;

  // 掷钱动画
  animateTo(
    { duration: 800, curve: Curve.FastOutSlowIn },
    () => {
      this.coinY = 200;
      this.coinRotation = 720;
    }
  );
}

三、UI 绑定

3.1 铜钱渲染

typescript 复制代码
Text('🪙')
  .fontSize(40)
  .position({ x: this.coinX, y: this.coinY })
  .rotate({ angle: this.coinRotation })
  .opacity(this.coinOpacity)
  .animation({ duration: 800, curve: Curve.FastOutSlowIn })

四、缓动曲线选择

4.1 曲线对比

曲线 效果 适用场景
FastOutSlowIn 加速抛出→减速落地 掷钱动画
EaseOut 先快后慢 元素出现
EaseIn 先慢后快 元素消失
Linear 匀速 持续旋转

五、掷钱动画设计总结

5.1 动画流程

text 复制代码
用户点击"开始起卦"
  ↓
重置铜钱位置(上方,不可见)
  ↓
animateTo 动画
  ↓
铜钱下落 + 旋转(800ms)
  ↓
动画完成,显示卦象

总结

本篇以玄象项目掷钱动画为蓝本,深入剖析了 animateTo 显式动画的使用:从 animateTo 基本用法、Curve.FastOutSlowIn 缓动曲线、平移动画与旋转动画的组合,到动画完成回调。掌握这套动画模拟方法论,您就能为任何 HarmonyOS 应用打造物理感的交互反馈。

如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!


相关资源:

相关推荐
李游Leo35 分钟前
《HarmonyOS 7 ArkGraphics 3D 空间设计开发实战》08:动画、生命周期与SpaceRoom工程化收尾【鸿蒙心迹】
3d·harmonyos
轻口味1 小时前
HarmonyOS 7 新特性2:音频编创——轻音台里的降噪、环绕与格式转换
华为·音视频·harmonyos·鸿蒙·音频编创
m0_738185822 小时前
Flutter 鸿蒙化实战:flutter_blue_plus 适配 OpenHarmony,蓝牙扫描连接开箱即用
flutter·华为·harmonyos·鸿蒙
李游Leo2 小时前
HarmonyOS 7 + ArkUI + Adaptive Layout 学习笔记:折叠屏多形态布局适配与窗口状态响应机制【鸿蒙心迹】
笔记·学习·harmonyos
贾伟康2 小时前
【HarmonyOS 7新能力|067】LTPO可变帧率实战:让动画流畅而静态页面省电
harmonyos·arkts·低功耗·ltpo·可变帧率
LucianaiB2 小时前
华为云码道 AI 编程实战:我用 CodeArts 智能体打造了一款 HarmonyOS 游戏化专注应用「智办 ZhiBan」
人工智能·ai·华为云·harmonyos·codearts·材料
李游Leo3 小时前
HarmonyOS 7 + ArkTS + Image Kit 学习笔记:图像超分处理链路与 PixelMap 数据流实践【鸿蒙心迹】
笔记·学习·harmonyos
xq95273 小时前
JSON to ArkTS Model 王者归来
harmonyos
m0_738185823 小时前
Flutter 鸿蒙化实战:flutter_background_service 适配 OpenHarmony,后台服务
flutter·华为·harmonyos·鸿蒙
less_121383 小时前
HarmonyOS WPS Open SDK 快速入门:HAR 集成到 sendRequest 打开文档
华为·harmonyos·wps