# x-animation-s ### 开发文档 [TMUI4.0文档](https://xui.tmui.design/) [TMUI4.0组件库](https://ext.dcloud.net.cn/plugin?id=16369) ### 功能特色 这是原生动画,性能好,有3d旋转效果,给你的应用增彩。基于原生实现,非CSS样式动画,具有高性能和流畅的动画效果。 ### 兼容性 | IOS | Android | WEB | 小程序 | | --- | --- | --- | --- | | 支持 | 支持 | 支持 | 支持 | ### 说明 这是tmui4.0|XUI的原生插件附赠插件。种子用户可免于购买。 ### 使用前提 需要自定义基座运行,且安卓5.0+(含5.0)以上支持。 ### API接口说明 #### 1. translate - 位移动画 ```ts interface XDANIMATION_TRANSLATE_OPTIONS { ele: UniElement|null; // 目标元素 duration?: number; // 动画持续时间,默认1000ms delay?: number; // 延迟执行时间,默认0ms translation?: number; // 位移方向,默认0 from?: number; // 起始位置,默认360 len?: number; // 位移距离,默认360 loop?: number; // 循环次数,默认0 start?: Function; // 动画开始回调 end?: Function; // 动画结束回调 } ``` #### 2. rotate - 旋转动画 ```ts interface XDANIMATION_ROTATE_OPTIONS { ele: UniElement|null; // 目标元素 duration?: number; // 动画持续时间,默认1000ms delay?: number; // 延迟执行时间,默认0ms from?: number; // 起始角度,默认0 deg?: number; // 旋转角度,默认360 loop?: number; // 循环次数,默认0 start?: Function; // 动画开始回调 end?: Function; // 动画结束回调 } ``` #### 3. scale - 缩放动画 ```ts interface XDANIMATION_SCALE_OPTIONS { ele: UniElement|null; // 目标元素 duration?: number; // 动画持续时间,默认1000ms delay?: number; // 延迟执行时间,默认0ms direction?: number; // 缩放方向,默认2 scale?: number; // 目标缩放比例,默认1 from?: number; // 起始缩放比例,默认0 loop?: number; // 循环次数,默认0 start?: Function; // 动画开始回调 end?: Function; // 动画结束回调 } ``` #### 4. flip3D - 3D翻转动画 ```ts interface XDANIMATION_FLIP3D_OPTIONS { ele: UniElement|null; // 目标元素 duration?: number; // 动画持续时间,默认1000ms delay?: number; // 延迟执行时间,默认0ms axis?: number; // 翻转轴,默认1 from?: number; // 起始角度,默认0 deg?: number; // 翻转角度,默认360 loop?: number; // 循环次数,默认0 cameraDistance?: number; // 摄像机距离,默认12 scaleZ?: number; // Z轴缩放,默认0.5 start?: Function; // 动画开始回调 end?: Function; // 动画结束回调 } ``` ### 特别注意事项 1. **iOS平台3D翻转限制**: - iOS平台下,3D翻转角度只能在0-180度之间 - 如需实现360度翻转,需要分段执行: 1. 先执行0-180度翻转 2. 在回调中执行180-0度翻转 2. **生命周期回调**: - start:动画开始时触发 - end:动画结束时触发 - 可以在回调中执行连续动画或其他操作 ### 使用示例 ```vue ``` ### 动画组合示例 ```ts // 连续动画示例:缩放-旋转-位移 const complexAnimation = () => { xAnimationS.scale({ ele: uni.getElementById("xta"), duration: 500, from: 1, scale: 1.2, end: () => { xAnimationS.rotate({ ele: uni.getElementById("xta"), duration: 500, deg: 180, end: () => { xAnimationS.translate({ ele: uni.getElementById("xta"), duration: 500, len: 100 }) } }) } }) } ```