Skip to content

@piant/animation 简介

@piant/animation 是 Piant 生态中的动画包,参考 Web Animation API 设计,底层由 popmotion 驱动,帧循环依托 Pixi.js 的 Ticker

核心特点

  • Web Animation API 风格playpausecancelfinishreverseplayStatecurrentTime,以及 finished Promise——熟悉的接口,极低学习成本。
  • Keyframe 动画:支持数组式关键帧与属性索引式关键帧(PropertyIndexedKeyframes),可精确控制每段的缓动曲线。
  • 丰富的缓动支持:内置 lineareaseease-inease-outease-in-outcubic-bezier(…) 及 popmotion 专属缓动(backInanticipate 等)。
  • 与布局无缝集成:位移(x/y)不修改 Yoga Flexbox 布局值,仅叠加偏移;opacity/width 等样式属性通过 setStyle() 正确触发布局更新。
  • Pixi.js Ticker 驱动:与渲染帧完全同步,无需 requestAnimationFrame 手动管理。

可动画属性

类别属性
位移xy
缩放scalescaleXscaleY
旋转rotation(弧度)
透明度alphaopacity
视觉样式backgroundColorborderRadiusborderTopLeftRadiusborderTopRightRadiusborderBottomRightRadiusborderBottomLeftRadius
尺寸widthheight

alpha vs opacityalpha 直接操作 Pixi Container 的 alpha 属性(动画结束后恢复),opacity 通过 setStyle 触发布局更新。两者均可动画,建议优先使用 alpha

安装

bash
pnpm add @piant/animation

@piant/animation@piant/corepixi.js 作为 peerDependency,请确保已安装。

引入方式

挂载原型方法(推荐)

ts
// 在入口文件中导入一次,整个应用均可使用 node.animate()
import '@piant/animation';

之后任意 PNodeViewImageText 等的底层节点)都会拥有 .animate() 方法。

独立函数

ts
import { animate } from '@piant/animation';

const anim = animate(node, keyframes, options);

下一步

Released under the MIT License.