1e41f4b71Sopenharmony_ci# @ohos.animator (动画) 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci本模块提供组件动画效果,包括定义动画、启动动画和以相反的顺序播放动画等。 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ci> **说明:** 6e41f4b71Sopenharmony_ci> 7e41f4b71Sopenharmony_ci> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8e41f4b71Sopenharmony_ci> 9e41f4b71Sopenharmony_ci> 本模块从API version 9开始支持在ArkTS中使用。 10e41f4b71Sopenharmony_ci> 11e41f4b71Sopenharmony_ci> 该模块不支持在[UIAbility](../apis-ability-kit/js-apis-app-ability-uiAbility.md)的文件声明处使用,即不能在UIAbility的生命周期中调用,需要在创建组件实例后使用。 12e41f4b71Sopenharmony_ci> 13e41f4b71Sopenharmony_ci> 本模块功能依赖UI的执行上下文,不可在UI上下文不明确的地方使用,参见[UIContext](js-apis-arkui-UIContext.md#uicontext)说明。 14e41f4b71Sopenharmony_ci> 15e41f4b71Sopenharmony_ci> 从API version 10开始,可以通过使用[UIContext](js-apis-arkui-UIContext.md#uicontext)中的[createAnimator](js-apis-arkui-UIContext.md#createanimator)来明确UI的执行上下文。 16e41f4b71Sopenharmony_ci 17e41f4b71Sopenharmony_ci## 导入模块 18e41f4b71Sopenharmony_ci 19e41f4b71Sopenharmony_ci```ts 20e41f4b71Sopenharmony_ciimport { Animator as animator, AnimatorOptions,AnimatorResult } from '@kit.ArkUI'; 21e41f4b71Sopenharmony_ci``` 22e41f4b71Sopenharmony_ci## create<sup>9+</sup> 23e41f4b71Sopenharmony_ci 24e41f4b71Sopenharmony_cicreate(options: AnimatorOptions): AnimatorResult 25e41f4b71Sopenharmony_ci 26e41f4b71Sopenharmony_ci定义Animator类。 27e41f4b71Sopenharmony_ci 28e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 29e41f4b71Sopenharmony_ci 30e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 31e41f4b71Sopenharmony_ci 32e41f4b71Sopenharmony_ci**参数:** 33e41f4b71Sopenharmony_ci 34e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 35e41f4b71Sopenharmony_ci| ------- | ----------------------------------- | ---- | ------- | 36e41f4b71Sopenharmony_ci| options | [AnimatorOptions](#animatoroptions) | 是 | 定义动画选项。 | 37e41f4b71Sopenharmony_ci 38e41f4b71Sopenharmony_ci**返回值:** 39e41f4b71Sopenharmony_ci 40e41f4b71Sopenharmony_ci| 类型 | 说明 | 41e41f4b71Sopenharmony_ci| --------------------------------- | ------------- | 42e41f4b71Sopenharmony_ci| [AnimatorResult](#animatorresult) | Animator结果接口。 | 43e41f4b71Sopenharmony_ci 44e41f4b71Sopenharmony_ci**错误码**: 45e41f4b71Sopenharmony_ci 46e41f4b71Sopenharmony_ci以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 47e41f4b71Sopenharmony_ci 48e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 49e41f4b71Sopenharmony_ci| ------- | -------- | 50e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2.Incorrect parameters types; 3. Parameter verification failed. | 51e41f4b71Sopenharmony_ci 52e41f4b71Sopenharmony_ci**示例:** 53e41f4b71Sopenharmony_ci 54e41f4b71Sopenharmony_ci> **说明:** 55e41f4b71Sopenharmony_ci> 56e41f4b71Sopenharmony_ci> 推荐通过使用[UIContext](js-apis-arkui-UIContext.md#uicontext)中的[createAnimator](js-apis-arkui-UIContext.md#createanimator)接口明确UI上下文。 57e41f4b71Sopenharmony_ci 58e41f4b71Sopenharmony_ci ```ts 59e41f4b71Sopenharmony_ciimport {Animator as animator, AnimatorOptions, AnimatorResult } from '@kit.ArkUI'; 60e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 61e41f4b71Sopenharmony_cilet options: AnimatorOptions = { 62e41f4b71Sopenharmony_ci duration: 1500, 63e41f4b71Sopenharmony_ci easing: "friction", 64e41f4b71Sopenharmony_ci delay: 0, 65e41f4b71Sopenharmony_ci fill: "forwards", 66e41f4b71Sopenharmony_ci direction: "normal", 67e41f4b71Sopenharmony_ci iterations: 3, 68e41f4b71Sopenharmony_ci begin: 200.0, 69e41f4b71Sopenharmony_ci end: 400.0 70e41f4b71Sopenharmony_ci}; 71e41f4b71Sopenharmony_cianimator.create(options);// 建议使用 UIContext.creatAnimator()接口 72e41f4b71Sopenharmony_ci ``` 73e41f4b71Sopenharmony_ci 74e41f4b71Sopenharmony_ci## AnimatorResult 75e41f4b71Sopenharmony_ci 76e41f4b71Sopenharmony_ci定义Animator结果接口。 77e41f4b71Sopenharmony_ci 78e41f4b71Sopenharmony_ci### reset<sup>9+</sup> 79e41f4b71Sopenharmony_ci 80e41f4b71Sopenharmony_cireset(options: AnimatorOptions): void 81e41f4b71Sopenharmony_ci 82e41f4b71Sopenharmony_ci更新当前动画器。 83e41f4b71Sopenharmony_ci 84e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 85e41f4b71Sopenharmony_ci 86e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 87e41f4b71Sopenharmony_ci 88e41f4b71Sopenharmony_ci**参数:** 89e41f4b71Sopenharmony_ci 90e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 91e41f4b71Sopenharmony_ci| ------- | ----------------------------------- | ---- | ------- | 92e41f4b71Sopenharmony_ci| options | [AnimatorOptions](#animatoroptions) | 是 | 定义动画选项。 | 93e41f4b71Sopenharmony_ci 94e41f4b71Sopenharmony_ci**错误码:** 95e41f4b71Sopenharmony_ci 96e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[ohos.animator(动画)](errorcode-animator.md)错误码。 97e41f4b71Sopenharmony_ci 98e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 99e41f4b71Sopenharmony_ci| --------- | ------- | 100e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2.Incorrect parameters types; 3. Parameter verification failed. | 101e41f4b71Sopenharmony_ci| 100001 | The specified page is not found or the object property list is not obtained.| 102e41f4b71Sopenharmony_ci 103e41f4b71Sopenharmony_ci 104e41f4b71Sopenharmony_ci**示例:** 105e41f4b71Sopenharmony_ci 106e41f4b71Sopenharmony_ci```ts 107e41f4b71Sopenharmony_ciimport {Animator as animator, AnimatorOptions, AnimatorResult } from '@kit.ArkUI'; 108e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 109e41f4b71Sopenharmony_cilet options: AnimatorOptions = { 110e41f4b71Sopenharmony_ci duration: 1500, 111e41f4b71Sopenharmony_ci easing: "friction", 112e41f4b71Sopenharmony_ci delay: 0, 113e41f4b71Sopenharmony_ci fill: "forwards", 114e41f4b71Sopenharmony_ci direction: "normal", 115e41f4b71Sopenharmony_ci iterations: 3, 116e41f4b71Sopenharmony_ci begin: 200.0, 117e41f4b71Sopenharmony_ci end: 400.0 118e41f4b71Sopenharmony_ci}; 119e41f4b71Sopenharmony_cilet optionsNew: AnimatorOptions = { 120e41f4b71Sopenharmony_ci duration: 1500, 121e41f4b71Sopenharmony_ci easing: "friction", 122e41f4b71Sopenharmony_ci delay: 0, 123e41f4b71Sopenharmony_ci fill: "forwards", 124e41f4b71Sopenharmony_ci direction: "normal", 125e41f4b71Sopenharmony_ci iterations: 5, 126e41f4b71Sopenharmony_ci begin: 200.0, 127e41f4b71Sopenharmony_ci end: 400.0 128e41f4b71Sopenharmony_ci}; 129e41f4b71Sopenharmony_citry { 130e41f4b71Sopenharmony_ci let animatorResult:AnimatorResult|undefined = animator.create(options) 131e41f4b71Sopenharmony_ci animatorResult.reset(optionsNew); 132e41f4b71Sopenharmony_ci} catch(error) { 133e41f4b71Sopenharmony_ci let message = (error as BusinessError).message 134e41f4b71Sopenharmony_ci let code = (error as BusinessError).code 135e41f4b71Sopenharmony_ci console.error(`Animator reset failed, error code: ${code}, message: ${message}.`); 136e41f4b71Sopenharmony_ci} 137e41f4b71Sopenharmony_ci``` 138e41f4b71Sopenharmony_ci 139e41f4b71Sopenharmony_ci### play 140e41f4b71Sopenharmony_ci 141e41f4b71Sopenharmony_ciplay(): void 142e41f4b71Sopenharmony_ci 143e41f4b71Sopenharmony_ci启动动画。动画会保留上一次的播放状态,比如播放状态设置reverse后,再次播放会保留reverse的播放状态。 144e41f4b71Sopenharmony_ci 145e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 146e41f4b71Sopenharmony_ci 147e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 148e41f4b71Sopenharmony_ci 149e41f4b71Sopenharmony_ci**示例:** 150e41f4b71Sopenharmony_ci 151e41f4b71Sopenharmony_ci```ts 152e41f4b71Sopenharmony_cianimator.play(); 153e41f4b71Sopenharmony_ci``` 154e41f4b71Sopenharmony_ci 155e41f4b71Sopenharmony_ci### finish 156e41f4b71Sopenharmony_ci 157e41f4b71Sopenharmony_cifinish(): void 158e41f4b71Sopenharmony_ci 159e41f4b71Sopenharmony_ci结束动画。 160e41f4b71Sopenharmony_ci 161e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 162e41f4b71Sopenharmony_ci 163e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 164e41f4b71Sopenharmony_ci 165e41f4b71Sopenharmony_ci**示例:** 166e41f4b71Sopenharmony_ci 167e41f4b71Sopenharmony_ci```ts 168e41f4b71Sopenharmony_cianimator.finish(); 169e41f4b71Sopenharmony_ci``` 170e41f4b71Sopenharmony_ci 171e41f4b71Sopenharmony_ci### pause 172e41f4b71Sopenharmony_ci 173e41f4b71Sopenharmony_cipause(): void 174e41f4b71Sopenharmony_ci 175e41f4b71Sopenharmony_ci暂停动画。 176e41f4b71Sopenharmony_ci 177e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 178e41f4b71Sopenharmony_ci 179e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 180e41f4b71Sopenharmony_ci 181e41f4b71Sopenharmony_ci**示例:** 182e41f4b71Sopenharmony_ci 183e41f4b71Sopenharmony_ci```ts 184e41f4b71Sopenharmony_cianimator.pause(); 185e41f4b71Sopenharmony_ci``` 186e41f4b71Sopenharmony_ci 187e41f4b71Sopenharmony_ci### cancel 188e41f4b71Sopenharmony_ci 189e41f4b71Sopenharmony_cicancel(): void 190e41f4b71Sopenharmony_ci 191e41f4b71Sopenharmony_ci取消动画。 192e41f4b71Sopenharmony_ci 193e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 194e41f4b71Sopenharmony_ci 195e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 196e41f4b71Sopenharmony_ci 197e41f4b71Sopenharmony_ci**示例:** 198e41f4b71Sopenharmony_ci 199e41f4b71Sopenharmony_ci```ts 200e41f4b71Sopenharmony_cianimator.cancel(); 201e41f4b71Sopenharmony_ci``` 202e41f4b71Sopenharmony_ci 203e41f4b71Sopenharmony_ci### reverse 204e41f4b71Sopenharmony_ci 205e41f4b71Sopenharmony_cireverse(): void 206e41f4b71Sopenharmony_ci 207e41f4b71Sopenharmony_ci以相反的顺序播放动画。使用interpolating-spring曲线时此接口无效。 208e41f4b71Sopenharmony_ci 209e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 210e41f4b71Sopenharmony_ci 211e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 212e41f4b71Sopenharmony_ci 213e41f4b71Sopenharmony_ci**示例:** 214e41f4b71Sopenharmony_ci 215e41f4b71Sopenharmony_ci```ts 216e41f4b71Sopenharmony_cianimator.reverse(); 217e41f4b71Sopenharmony_ci``` 218e41f4b71Sopenharmony_ci 219e41f4b71Sopenharmony_ci### onFrame<sup>12+</sup> 220e41f4b71Sopenharmony_ci 221e41f4b71Sopenharmony_cionFrame: (progress: number) => void 222e41f4b71Sopenharmony_ci 223e41f4b71Sopenharmony_ci接收到帧时回调。 224e41f4b71Sopenharmony_ci 225e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 226e41f4b71Sopenharmony_ci 227e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 228e41f4b71Sopenharmony_ci 229e41f4b71Sopenharmony_ci**参数:** 230e41f4b71Sopenharmony_ci 231e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 232e41f4b71Sopenharmony_ci| -------- | ------ | ---- | -------- | 233e41f4b71Sopenharmony_ci| progress | number | 是 | 动画的当前值。 | 234e41f4b71Sopenharmony_ci 235e41f4b71Sopenharmony_ci**示例:** 236e41f4b71Sopenharmony_ci 237e41f4b71Sopenharmony_ci```ts 238e41f4b71Sopenharmony_ciimport {Animator as animator, AnimatorResult } from '@kit.ArkUI'; 239e41f4b71Sopenharmony_cilet animatorResult:AnimatorResult|undefined = animator.create(options) 240e41f4b71Sopenharmony_cianimatorResult.onFrame = (value:number)=> { 241e41f4b71Sopenharmony_ci console.info("onFrame callback") 242e41f4b71Sopenharmony_ci} 243e41f4b71Sopenharmony_ci``` 244e41f4b71Sopenharmony_ci 245e41f4b71Sopenharmony_ci### onFinish<sup>12+</sup> 246e41f4b71Sopenharmony_ci 247e41f4b71Sopenharmony_cionFinish: () => void 248e41f4b71Sopenharmony_ci 249e41f4b71Sopenharmony_ci动画完成时回调。 250e41f4b71Sopenharmony_ci 251e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 252e41f4b71Sopenharmony_ci 253e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 254e41f4b71Sopenharmony_ci 255e41f4b71Sopenharmony_ci**示例:** 256e41f4b71Sopenharmony_ci 257e41f4b71Sopenharmony_ci```ts 258e41f4b71Sopenharmony_ciimport {Animator as animator, AnimatorResult } from '@kit.ArkUI'; 259e41f4b71Sopenharmony_cilet animatorResult:AnimatorResult|undefined = animator.create(options) 260e41f4b71Sopenharmony_cianimatorResult.onFinish = ()=> { 261e41f4b71Sopenharmony_ci console.info("onFinish callback") 262e41f4b71Sopenharmony_ci} 263e41f4b71Sopenharmony_ci``` 264e41f4b71Sopenharmony_ci 265e41f4b71Sopenharmony_ci### onCancel<sup>12+</sup> 266e41f4b71Sopenharmony_ci 267e41f4b71Sopenharmony_cionCancel: () => void 268e41f4b71Sopenharmony_ci 269e41f4b71Sopenharmony_ci动画被取消时回调。 270e41f4b71Sopenharmony_ci 271e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 272e41f4b71Sopenharmony_ci 273e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 274e41f4b71Sopenharmony_ci 275e41f4b71Sopenharmony_ci**示例:** 276e41f4b71Sopenharmony_ci 277e41f4b71Sopenharmony_ci```ts 278e41f4b71Sopenharmony_ciimport { Animator as animator, AnimatorResult } from '@kit.ArkUI'; 279e41f4b71Sopenharmony_cilet animatorResult:AnimatorResult|undefined = animator.create(options) 280e41f4b71Sopenharmony_cianimatorResult.onCancel = ()=> { 281e41f4b71Sopenharmony_ci console.info("onCancel callback") 282e41f4b71Sopenharmony_ci} 283e41f4b71Sopenharmony_ci``` 284e41f4b71Sopenharmony_ci 285e41f4b71Sopenharmony_ci### onRepeat<sup>12+</sup> 286e41f4b71Sopenharmony_ci 287e41f4b71Sopenharmony_cionRepeat: () => void 288e41f4b71Sopenharmony_ci 289e41f4b71Sopenharmony_ci动画重复时回调。 290e41f4b71Sopenharmony_ci 291e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 292e41f4b71Sopenharmony_ci 293e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 294e41f4b71Sopenharmony_ci 295e41f4b71Sopenharmony_ci**示例:** 296e41f4b71Sopenharmony_ci 297e41f4b71Sopenharmony_ci```ts 298e41f4b71Sopenharmony_ciimport {Animator as animator, AnimatorResult} from '@kit.ArkUI'; 299e41f4b71Sopenharmony_cilet animatorResult:AnimatorResult|undefined = animator.create(options) 300e41f4b71Sopenharmony_cianimatorResult.onRepeat = ()=> { 301e41f4b71Sopenharmony_ci console.info("onRepeat callback") 302e41f4b71Sopenharmony_ci} 303e41f4b71Sopenharmony_ci``` 304e41f4b71Sopenharmony_ci 305e41f4b71Sopenharmony_ci### onframe<sup>(deprecated)</sup> 306e41f4b71Sopenharmony_ci 307e41f4b71Sopenharmony_ci> **说明:** 308e41f4b71Sopenharmony_ci> 309e41f4b71Sopenharmony_ci> 从API version 12开始废弃,推荐使用[onFrame](#onframe12)。 310e41f4b71Sopenharmony_ci 311e41f4b71Sopenharmony_cionframe: (progress: number) => void 312e41f4b71Sopenharmony_ci 313e41f4b71Sopenharmony_ci接收到帧时回调。 314e41f4b71Sopenharmony_ci 315e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 316e41f4b71Sopenharmony_ci 317e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 318e41f4b71Sopenharmony_ci 319e41f4b71Sopenharmony_ci**参数:** 320e41f4b71Sopenharmony_ci 321e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 322e41f4b71Sopenharmony_ci| -------- | ------ | ---- | -------- | 323e41f4b71Sopenharmony_ci| progress | number | 是 | 动画的当前进度。 | 324e41f4b71Sopenharmony_ci 325e41f4b71Sopenharmony_ci**示例:** 326e41f4b71Sopenharmony_ci 327e41f4b71Sopenharmony_ci```ts 328e41f4b71Sopenharmony_ciimport { Animator as animator, AnimatorResult } from '@kit.ArkUI'; 329e41f4b71Sopenharmony_cilet animatorResult:AnimatorResult|undefined = animator.create(options) 330e41f4b71Sopenharmony_cianimatorResult.onframe = (value)=> { 331e41f4b71Sopenharmony_ci console.info("onframe callback") 332e41f4b71Sopenharmony_ci} 333e41f4b71Sopenharmony_ci``` 334e41f4b71Sopenharmony_ci 335e41f4b71Sopenharmony_ci### onfinish<sup>(deprecated)</sup> 336e41f4b71Sopenharmony_ci 337e41f4b71Sopenharmony_ci> **说明:** 338e41f4b71Sopenharmony_ci> 339e41f4b71Sopenharmony_ci> 从API version 12开始废弃,推荐使用[onFinish](#onfinish12)。 340e41f4b71Sopenharmony_ci 341e41f4b71Sopenharmony_cionfinish: () => void 342e41f4b71Sopenharmony_ci 343e41f4b71Sopenharmony_ci动画完成时回调。 344e41f4b71Sopenharmony_ci 345e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 346e41f4b71Sopenharmony_ci 347e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 348e41f4b71Sopenharmony_ci 349e41f4b71Sopenharmony_ci**示例:** 350e41f4b71Sopenharmony_ci 351e41f4b71Sopenharmony_ci```ts 352e41f4b71Sopenharmony_ciimport { Animator as animator, AnimatorResult } from '@kit.ArkUI'; 353e41f4b71Sopenharmony_cilet animatorResult:AnimatorResult|undefined = animator.create(options) 354e41f4b71Sopenharmony_cianimatorResult.onfinish = ()=> { 355e41f4b71Sopenharmony_ci console.info("onfinish callback") 356e41f4b71Sopenharmony_ci} 357e41f4b71Sopenharmony_ci``` 358e41f4b71Sopenharmony_ci 359e41f4b71Sopenharmony_ci### oncancel<sup>(deprecated)</sup> 360e41f4b71Sopenharmony_ci 361e41f4b71Sopenharmony_ci> **说明:** 362e41f4b71Sopenharmony_ci> 363e41f4b71Sopenharmony_ci> 从API version 12开始废弃,推荐使用[onCancel](#oncancel12)。 364e41f4b71Sopenharmony_ci 365e41f4b71Sopenharmony_ci 366e41f4b71Sopenharmony_cioncancel: () => void 367e41f4b71Sopenharmony_ci 368e41f4b71Sopenharmony_ci动画被取消时回调。 369e41f4b71Sopenharmony_ci 370e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 371e41f4b71Sopenharmony_ci 372e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 373e41f4b71Sopenharmony_ci 374e41f4b71Sopenharmony_ci**示例:** 375e41f4b71Sopenharmony_ci 376e41f4b71Sopenharmony_ci```ts 377e41f4b71Sopenharmony_ciimport { Animator as animator, AnimatorResult } from '@kit.ArkUI'; 378e41f4b71Sopenharmony_cilet animatorResult:AnimatorResult|undefined = animator.create(options) 379e41f4b71Sopenharmony_cianimatorResult.oncancel = ()=> { 380e41f4b71Sopenharmony_ci console.info("oncancel callback") 381e41f4b71Sopenharmony_ci} 382e41f4b71Sopenharmony_ci``` 383e41f4b71Sopenharmony_ci 384e41f4b71Sopenharmony_ci### onrepeat<sup>(deprecated)</sup> 385e41f4b71Sopenharmony_ci 386e41f4b71Sopenharmony_ci> **说明:** 387e41f4b71Sopenharmony_ci> 388e41f4b71Sopenharmony_ci> 从API version 12开始废弃,推荐使用[onRepeat](#onrepeat12)。 389e41f4b71Sopenharmony_ci 390e41f4b71Sopenharmony_cionrepeat: () => void 391e41f4b71Sopenharmony_ci 392e41f4b71Sopenharmony_ci动画重复时回调。 393e41f4b71Sopenharmony_ci 394e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 395e41f4b71Sopenharmony_ci 396e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 397e41f4b71Sopenharmony_ci 398e41f4b71Sopenharmony_ci**示例:** 399e41f4b71Sopenharmony_ci 400e41f4b71Sopenharmony_ci```ts 401e41f4b71Sopenharmony_ciimport { Animator as animator, AnimatorResult } from '@kit.ArkUI'; 402e41f4b71Sopenharmony_cilet animatorResult:AnimatorResult|undefined = animator.create(options) 403e41f4b71Sopenharmony_cianimatorResult.onrepeat = ()=> { 404e41f4b71Sopenharmony_ci console.info("onrepeat callback") 405e41f4b71Sopenharmony_ci} 406e41f4b71Sopenharmony_ci``` 407e41f4b71Sopenharmony_ci 408e41f4b71Sopenharmony_ci### setExpectedFrameRateRange<sup>12+</sup> 409e41f4b71Sopenharmony_ci 410e41f4b71Sopenharmony_cisetExpectedFrameRateRange(rateRange: ExpectedFrameRateRange): void 411e41f4b71Sopenharmony_ci 412e41f4b71Sopenharmony_ci设置期望的帧率范围。 413e41f4b71Sopenharmony_ci 414e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 415e41f4b71Sopenharmony_ci 416e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 417e41f4b71Sopenharmony_ci 418e41f4b71Sopenharmony_ci**参数:** 419e41f4b71Sopenharmony_ci 420e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 421e41f4b71Sopenharmony_ci| --------------- | ------------------------------------------ | ---- | -----------------------------| 422e41f4b71Sopenharmony_ci| rateRange | [ExpectedFrameRateRange](../apis-arkui/arkui-ts/ts-explicit-animation.md#expectedframeraterange11)| 是 | 设置期望的帧率范围。| 423e41f4b71Sopenharmony_ci 424e41f4b71Sopenharmony_ci**示例:** 425e41f4b71Sopenharmony_ci 426e41f4b71Sopenharmony_ci```ts 427e41f4b71Sopenharmony_ciimport { Animator as animator, AnimatorResult } from '@kit.ArkUI'; 428e41f4b71Sopenharmony_cilet animatorResult: AnimatorResult | undefined = animator.create({ 429e41f4b71Sopenharmony_ci duration: 2000, 430e41f4b71Sopenharmony_ci easing: "ease", 431e41f4b71Sopenharmony_ci delay: 0, 432e41f4b71Sopenharmony_ci fill: "forwards", 433e41f4b71Sopenharmony_ci direction: "normal", 434e41f4b71Sopenharmony_ci iterations: 1, 435e41f4b71Sopenharmony_ci begin: 100, 436e41f4b71Sopenharmony_ci end: 200 437e41f4b71Sopenharmony_ci}) 438e41f4b71Sopenharmony_cilet expectedFrameRate: ExpectedFrameRateRange = { 439e41f4b71Sopenharmony_ci min: 0, 440e41f4b71Sopenharmony_ci max: 120, 441e41f4b71Sopenharmony_ci expected: 30 442e41f4b71Sopenharmony_ci} 443e41f4b71Sopenharmony_cianimatorResult.setExpectedFrameRateRange(expectedFrameRate); 444e41f4b71Sopenharmony_ci``` 445e41f4b71Sopenharmony_ci 446e41f4b71Sopenharmony_ci## AnimatorOptions 447e41f4b71Sopenharmony_ci 448e41f4b71Sopenharmony_ci定义动画选项。 449e41f4b71Sopenharmony_ci 450e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 451e41f4b71Sopenharmony_ci 452e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 453e41f4b71Sopenharmony_ci 454e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 455e41f4b71Sopenharmony_ci| ---------- | ----------------------------------------------------------- | ---- | ------------------------------------------------------------ | 456e41f4b71Sopenharmony_ci| duration | number | 是 | 动画播放的时长,单位毫秒。<br/>默认值:0。 | 457e41f4b71Sopenharmony_ci| easing | string | 是 | 动画插值曲线,仅支持以下可选值:<br/>"linear":动画线性变化。<br/>"ease":动画开始和结束时的速度较慢,cubic-bezier(0.25、0.1、0.25、1.0)。<br/>"ease-in":动画播放速度先慢后快,cubic-bezier(0.42, 0.0, 1.0, 1.0)。<br/>"ease-out":动画播放速度先快后慢,cubic-bezier(0.0, 0.0, 0.58, 1.0)。<br/>"ease-in-out":动画播放速度先加速后减速,cubic-bezier(0.42, 0.0, 0.58, 1.0)。<br/>"fast-out-slow-in":标准曲线,cubic-bezier(0.4,0.0,0.2,1.0)。<br/>"linear-out-slow-in":减速曲线,cubic-bezier(0.0,0.0,0.2,1.0)。<br>"fast-out-linear-in":加速曲线,cubic-bezier(0.4, 0.0, 1.0, 1.0)。<br/>"friction":阻尼曲线,cubic-bezier(0.2, 0.0, 0.2, 1.0)。<br/>"extreme-deceleration":急缓曲线,cubic-bezier(0.0, 0.0, 0.0, 1.0)。<br/>"rhythm":节奏曲线,cubic-bezier(0.7, 0.0, 0.2, 1.0)。<br/>"sharp":锐利曲线,cubic-bezier(0.33, 0.0, 0.67, 1.0)。<br/>"smooth":平滑曲线,cubic-bezier(0.4, 0.0, 0.4, 1.0)。<br/>"cubic-bezier(x1,y1,x2,y2)":三次贝塞尔曲线,x1、x2的值必须处于0-1之间。例如"cubic-bezier(0.42,0.0,0.58,1.0)"。<br/>"steps(number,step-position)":阶梯曲线,number必须设置,为正整数,step-position参数可选,支持设置start或end,默认值为end。例如"steps(3,start)"。<br/>"interpolating-spring(velocity,mass,stiffness,damping)":插值弹簧曲线,从API version 11开始支持且仅在ArkTS中支持使用。velocity、mass、stiffness、damping都是数值类型,且mass、stiffness、damping参数均应该大于0,具体参数含义参考[插值弹簧曲线](./js-apis-curve.md#curvesinterpolatingspring10)。使用interpolating-spring时,duration不生效,由弹簧参数决定;fill、direction、iterations设置无效,fill固定设置为"forwards",direction固定设置为"normal",iterations固定设置为1,且对animator的[reverse](#reverse)函数调用无效。即animator使用interpolating-spring时只能正向播放1次。<br/>默认值:"ease"。 | 458e41f4b71Sopenharmony_ci| delay | number | 是 | 动画延时播放时长,单位毫秒,设置为0时,表示不延时。设置为负数时动画提前播放,如果提前播放的时长大于动画总时长,动画直接过渡到终点。<br/>默认值:0。 | 459e41f4b71Sopenharmony_ci| fill | "none" \| "forwards" \| "backwards" \| "both" | 是 | 动画执行后是否恢复到初始状态,动画执行后,动画结束时的状态(在最后一个关键帧中定义)将保留。<br/>"none":在动画执行之前和之后都不会应用任何样式到目标上。<br/>"forwards":在动画结束后,目标将保留动画结束时的状态(在最后一个关键帧中定义)。<br/>"backwards":动画将在animation-delay期间应用第一个关键帧中定义的值。当animation-direction为"normal"或"alternate"时应用from关键帧中的值,当animation-direction为"reverse"或"alternate-reverse"时应用to关键帧中的值。<br/>"both":动画将遵循forwards和backwards的规则,从而在两个方向上扩展动画属性。 | 460e41f4b71Sopenharmony_ci| direction | "normal" \| "reverse" \| "alternate" \| "alternate-reverse" | 是 | 动画播放模式。<br/>"normal": 动画正向循环播放。<br/>"reverse": 动画反向循环播放。<br/>"alternate":动画交替循环播放,奇数次正向播放,偶数次反向播放。<br/>"alternate-reverse":动画反向交替循环播放,奇数次反向播放,偶数次正向播放。<br/>默认值:"normal"。 | 461e41f4b71Sopenharmony_ci| iterations | number | 是 | 动画播放次数。设置为0时不播放,设置为-1时无限次播放。<br/>**说明:** 设置为除-1外其他负数视为无效取值,无效取值动画默认播放1次。 | 462e41f4b71Sopenharmony_ci| begin | number | 是 | 动画插值起点。<br/>默认值:0。 | 463e41f4b71Sopenharmony_ci| end | number | 是 | 动画插值终点。<br/>默认值:1。 | 464e41f4b71Sopenharmony_ci 465e41f4b71Sopenharmony_ci 466e41f4b71Sopenharmony_ci## 完整示例 467e41f4b71Sopenharmony_ci### 基于JS扩展的类Web开发范式 468e41f4b71Sopenharmony_ci 469e41f4b71Sopenharmony_ci```html 470e41f4b71Sopenharmony_ci<!-- hml --> 471e41f4b71Sopenharmony_ci<div class="container"> 472e41f4b71Sopenharmony_ci <div class="Animation" style="height: {{divHeight}}px; width: {{divWidth}}px; background-color: red;" onclick="Show"> 473e41f4b71Sopenharmony_ci </div> 474e41f4b71Sopenharmony_ci</div> 475e41f4b71Sopenharmony_ci``` 476e41f4b71Sopenharmony_ci 477e41f4b71Sopenharmony_ci```ts 478e41f4b71Sopenharmony_ciimport { Animator as animator, AnimatorResult } from '@kit.ArkUI'; 479e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 480e41f4b71Sopenharmony_cilet DataTmp:Record<string,Animator> = { 481e41f4b71Sopenharmony_ci 'divWidth': 200, 482e41f4b71Sopenharmony_ci 'divHeight': 200, 483e41f4b71Sopenharmony_ci 'animator': animator 484e41f4b71Sopenharmony_ci} 485e41f4b71Sopenharmony_ciclass Tmp{ 486e41f4b71Sopenharmony_ci data:animator = DataTmp 487e41f4b71Sopenharmony_ci onInit:Function = ()=>{} 488e41f4b71Sopenharmony_ci Show:Function = ()=>{} 489e41f4b71Sopenharmony_ci} 490e41f4b71Sopenharmony_ciclass DateT{ 491e41f4b71Sopenharmony_ci divWidth:number = 0 492e41f4b71Sopenharmony_ci divHeight:number = 0 493e41f4b71Sopenharmony_ci animator:AnimatorResult | null = null 494e41f4b71Sopenharmony_ci} 495e41f4b71Sopenharmony_ci(Fn:(v:Tmp) => void) => {Fn({ 496e41f4b71Sopenharmony_ci data: DataTmp, 497e41f4b71Sopenharmony_ci onInit() { 498e41f4b71Sopenharmony_ci let options:AnimatorOptions = { 499e41f4b71Sopenharmony_ci duration: 1500, 500e41f4b71Sopenharmony_ci easing: "friction", 501e41f4b71Sopenharmony_ci delay: 0, 502e41f4b71Sopenharmony_ci fill: "forwards", 503e41f4b71Sopenharmony_ci direction: "normal", 504e41f4b71Sopenharmony_ci iterations: 2, 505e41f4b71Sopenharmony_ci begin: 200.0, 506e41f4b71Sopenharmony_ci end: 400.0 507e41f4b71Sopenharmony_ci }; 508e41f4b71Sopenharmony_ci let DataTmp:DateT = { 509e41f4b71Sopenharmony_ci divWidth: 200, 510e41f4b71Sopenharmony_ci divHeight: 200, 511e41f4b71Sopenharmony_ci animator: null 512e41f4b71Sopenharmony_ci } 513e41f4b71Sopenharmony_ci DataTmp.animator = animator.create(options); 514e41f4b71Sopenharmony_ci }, 515e41f4b71Sopenharmony_ci Show() { 516e41f4b71Sopenharmony_ci let options1:AnimatorOptions = { 517e41f4b71Sopenharmony_ci duration: 1500, 518e41f4b71Sopenharmony_ci easing: "friction", 519e41f4b71Sopenharmony_ci delay: 0, 520e41f4b71Sopenharmony_ci fill: "forwards", 521e41f4b71Sopenharmony_ci direction: "normal", 522e41f4b71Sopenharmony_ci iterations: 2, 523e41f4b71Sopenharmony_ci begin: 0, 524e41f4b71Sopenharmony_ci end: 400.0, 525e41f4b71Sopenharmony_ci }; 526e41f4b71Sopenharmony_ci let DataTmp:DateT = { 527e41f4b71Sopenharmony_ci divWidth: 200, 528e41f4b71Sopenharmony_ci divHeight: 200, 529e41f4b71Sopenharmony_ci animator: null 530e41f4b71Sopenharmony_ci } 531e41f4b71Sopenharmony_ci try { 532e41f4b71Sopenharmony_ci DataTmp.animator = animator.create(options1); 533e41f4b71Sopenharmony_ci DataTmp.animator.reset(options1); 534e41f4b71Sopenharmony_ci } catch(error) { 535e41f4b71Sopenharmony_ci let message = (error as BusinessError).message 536e41f4b71Sopenharmony_ci let code = (error as BusinessError).code 537e41f4b71Sopenharmony_ci console.error(`Animator reset failed, error code: ${code}, message: ${message}.`); 538e41f4b71Sopenharmony_ci } 539e41f4b71Sopenharmony_ci let _this = DataTmp; 540e41f4b71Sopenharmony_ci if(DataTmp.animator){ 541e41f4b71Sopenharmony_ci DataTmp.animator.onFrame = (value:number)=> { 542e41f4b71Sopenharmony_ci _this.divWidth = value; 543e41f4b71Sopenharmony_ci _this.divHeight = value; 544e41f4b71Sopenharmony_ci }; 545e41f4b71Sopenharmony_ci DataTmp.animator.play(); 546e41f4b71Sopenharmony_ci } 547e41f4b71Sopenharmony_ci } 548e41f4b71Sopenharmony_ci})} 549e41f4b71Sopenharmony_ci``` 550e41f4b71Sopenharmony_ci 551e41f4b71Sopenharmony_ci  552e41f4b71Sopenharmony_ci 553e41f4b71Sopenharmony_ci### 基于ArkTS扩展的声明式开发范式 554e41f4b71Sopenharmony_ci 555e41f4b71Sopenharmony_ci> **说明:** 556e41f4b71Sopenharmony_ci> 557e41f4b71Sopenharmony_ci> 推荐通过使用[UIContext](js-apis-arkui-UIContext.md#uicontext)中的[createAnimator](js-apis-arkui-UIContext.md#createanimator)接口明确UI上下文。 558e41f4b71Sopenharmony_ci 559e41f4b71Sopenharmony_ci```ts 560e41f4b71Sopenharmony_ciimport { Animator as animator, AnimatorResult } from '@kit.ArkUI'; 561e41f4b71Sopenharmony_ci 562e41f4b71Sopenharmony_ci 563e41f4b71Sopenharmony_ci@Entry 564e41f4b71Sopenharmony_ci@Component 565e41f4b71Sopenharmony_cistruct AnimatorTest { 566e41f4b71Sopenharmony_ci private TAG: string = '[AnimatorTest]' 567e41f4b71Sopenharmony_ci private backAnimator: AnimatorResult | undefined = undefined 568e41f4b71Sopenharmony_ci private flag: boolean = false 569e41f4b71Sopenharmony_ci @State wid: number = 100 570e41f4b71Sopenharmony_ci @State hei: number = 100 571e41f4b71Sopenharmony_ci 572e41f4b71Sopenharmony_ci create() { 573e41f4b71Sopenharmony_ci let _this = this 574e41f4b71Sopenharmony_ci this.backAnimator = animator.create({// 建议使用 this.getUIContext.creatAnimator()接口 575e41f4b71Sopenharmony_ci duration: 2000, 576e41f4b71Sopenharmony_ci easing: "ease", 577e41f4b71Sopenharmony_ci delay: 0, 578e41f4b71Sopenharmony_ci fill: "forwards", 579e41f4b71Sopenharmony_ci direction: "normal", 580e41f4b71Sopenharmony_ci iterations: 1, 581e41f4b71Sopenharmony_ci begin: 100, 582e41f4b71Sopenharmony_ci end: 200 583e41f4b71Sopenharmony_ci }) 584e41f4b71Sopenharmony_ci this.backAnimator.onFinish = ()=> { 585e41f4b71Sopenharmony_ci _this.flag = true 586e41f4b71Sopenharmony_ci console.info(_this.TAG, 'backAnimator onfinish') 587e41f4b71Sopenharmony_ci } 588e41f4b71Sopenharmony_ci this.backAnimator.onRepeat = ()=> { 589e41f4b71Sopenharmony_ci console.info(_this.TAG, 'backAnimator repeat') 590e41f4b71Sopenharmony_ci } 591e41f4b71Sopenharmony_ci this.backAnimator.onCancel = ()=> { 592e41f4b71Sopenharmony_ci console.info(_this.TAG, 'backAnimator cancel') 593e41f4b71Sopenharmony_ci } 594e41f4b71Sopenharmony_ci this.backAnimator.onFrame = (value:number)=> { 595e41f4b71Sopenharmony_ci _this.wid = value 596e41f4b71Sopenharmony_ci _this.hei = value 597e41f4b71Sopenharmony_ci } 598e41f4b71Sopenharmony_ci } 599e41f4b71Sopenharmony_ci 600e41f4b71Sopenharmony_ci aboutToDisappear() { 601e41f4b71Sopenharmony_ci // 由于backAnimator在onframe中引用了this, this中保存了backAnimator, 602e41f4b71Sopenharmony_ci // 在自定义组件消失时应该将保存在组件中的backAnimator置空,避免内存泄漏 603e41f4b71Sopenharmony_ci this.backAnimator = undefined; 604e41f4b71Sopenharmony_ci } 605e41f4b71Sopenharmony_ci 606e41f4b71Sopenharmony_ci build() { 607e41f4b71Sopenharmony_ci Column() { 608e41f4b71Sopenharmony_ci Column() { 609e41f4b71Sopenharmony_ci Column() 610e41f4b71Sopenharmony_ci .width(this.wid) 611e41f4b71Sopenharmony_ci .height(this.hei) 612e41f4b71Sopenharmony_ci .backgroundColor(Color.Red) 613e41f4b71Sopenharmony_ci } 614e41f4b71Sopenharmony_ci .width('100%') 615e41f4b71Sopenharmony_ci .height(300) 616e41f4b71Sopenharmony_ci 617e41f4b71Sopenharmony_ci Column() { 618e41f4b71Sopenharmony_ci Row() { 619e41f4b71Sopenharmony_ci Button('create') 620e41f4b71Sopenharmony_ci .fontSize(30) 621e41f4b71Sopenharmony_ci .fontColor(Color.Black) 622e41f4b71Sopenharmony_ci .onClick(() => { 623e41f4b71Sopenharmony_ci this.create() 624e41f4b71Sopenharmony_ci }) 625e41f4b71Sopenharmony_ci } 626e41f4b71Sopenharmony_ci .padding(10) 627e41f4b71Sopenharmony_ci 628e41f4b71Sopenharmony_ci Row() { 629e41f4b71Sopenharmony_ci Button('play') 630e41f4b71Sopenharmony_ci .fontSize(30) 631e41f4b71Sopenharmony_ci .fontColor(Color.Black) 632e41f4b71Sopenharmony_ci .onClick(() => { 633e41f4b71Sopenharmony_ci this.flag = false 634e41f4b71Sopenharmony_ci if(this.backAnimator){ 635e41f4b71Sopenharmony_ci this.backAnimator.play() 636e41f4b71Sopenharmony_ci } 637e41f4b71Sopenharmony_ci }) 638e41f4b71Sopenharmony_ci } 639e41f4b71Sopenharmony_ci .padding(10) 640e41f4b71Sopenharmony_ci 641e41f4b71Sopenharmony_ci Row() { 642e41f4b71Sopenharmony_ci Button('pause') 643e41f4b71Sopenharmony_ci .fontSize(30) 644e41f4b71Sopenharmony_ci .fontColor(Color.Black) 645e41f4b71Sopenharmony_ci .onClick(() => { 646e41f4b71Sopenharmony_ci if(this.backAnimator){ 647e41f4b71Sopenharmony_ci this.backAnimator.pause() 648e41f4b71Sopenharmony_ci } 649e41f4b71Sopenharmony_ci }) 650e41f4b71Sopenharmony_ci } 651e41f4b71Sopenharmony_ci .padding(10) 652e41f4b71Sopenharmony_ci 653e41f4b71Sopenharmony_ci Row() { 654e41f4b71Sopenharmony_ci Button('finish') 655e41f4b71Sopenharmony_ci .fontSize(30) 656e41f4b71Sopenharmony_ci .fontColor(Color.Black) 657e41f4b71Sopenharmony_ci .onClick(() => { 658e41f4b71Sopenharmony_ci this.flag = true 659e41f4b71Sopenharmony_ci if(this.backAnimator){ 660e41f4b71Sopenharmony_ci this.backAnimator.finish() 661e41f4b71Sopenharmony_ci } 662e41f4b71Sopenharmony_ci }) 663e41f4b71Sopenharmony_ci } 664e41f4b71Sopenharmony_ci .padding(10) 665e41f4b71Sopenharmony_ci 666e41f4b71Sopenharmony_ci Row() { 667e41f4b71Sopenharmony_ci Button('reverse') 668e41f4b71Sopenharmony_ci .fontSize(30) 669e41f4b71Sopenharmony_ci .fontColor(Color.Black) 670e41f4b71Sopenharmony_ci .onClick(() => { 671e41f4b71Sopenharmony_ci this.flag = false 672e41f4b71Sopenharmony_ci if(this.backAnimator){ 673e41f4b71Sopenharmony_ci this.backAnimator.reverse() 674e41f4b71Sopenharmony_ci } 675e41f4b71Sopenharmony_ci }) 676e41f4b71Sopenharmony_ci } 677e41f4b71Sopenharmony_ci .padding(10) 678e41f4b71Sopenharmony_ci 679e41f4b71Sopenharmony_ci Row() { 680e41f4b71Sopenharmony_ci Button('cancel') 681e41f4b71Sopenharmony_ci .fontSize(30) 682e41f4b71Sopenharmony_ci .fontColor(Color.Black) 683e41f4b71Sopenharmony_ci .onClick(() => { 684e41f4b71Sopenharmony_ci if(this.backAnimator){ 685e41f4b71Sopenharmony_ci this.backAnimator.cancel() 686e41f4b71Sopenharmony_ci } 687e41f4b71Sopenharmony_ci }) 688e41f4b71Sopenharmony_ci } 689e41f4b71Sopenharmony_ci .padding(10) 690e41f4b71Sopenharmony_ci 691e41f4b71Sopenharmony_ci Row() { 692e41f4b71Sopenharmony_ci Button('reset') 693e41f4b71Sopenharmony_ci .fontSize(30) 694e41f4b71Sopenharmony_ci .fontColor(Color.Black) 695e41f4b71Sopenharmony_ci .onClick(() => { 696e41f4b71Sopenharmony_ci if (this.flag) { 697e41f4b71Sopenharmony_ci this.flag = false 698e41f4b71Sopenharmony_ci if(this.backAnimator){ 699e41f4b71Sopenharmony_ci this.backAnimator.reset({ 700e41f4b71Sopenharmony_ci duration: 3000, 701e41f4b71Sopenharmony_ci easing: "ease-in", 702e41f4b71Sopenharmony_ci delay: 0, 703e41f4b71Sopenharmony_ci fill: "forwards", 704e41f4b71Sopenharmony_ci direction: "alternate", 705e41f4b71Sopenharmony_ci iterations: 3, 706e41f4b71Sopenharmony_ci begin: 100, 707e41f4b71Sopenharmony_ci end: 300 708e41f4b71Sopenharmony_ci }) 709e41f4b71Sopenharmony_ci } 710e41f4b71Sopenharmony_ci } else { 711e41f4b71Sopenharmony_ci console.info(this.TAG, 'Animation not ended') 712e41f4b71Sopenharmony_ci } 713e41f4b71Sopenharmony_ci }) 714e41f4b71Sopenharmony_ci } 715e41f4b71Sopenharmony_ci .padding(10) 716e41f4b71Sopenharmony_ci } 717e41f4b71Sopenharmony_ci } 718e41f4b71Sopenharmony_ci } 719e41f4b71Sopenharmony_ci} 720e41f4b71Sopenharmony_ci``` 721e41f4b71Sopenharmony_ci 722e41f4b71Sopenharmony_ci## update<sup>(deprecated)</sup> 723e41f4b71Sopenharmony_ci 724e41f4b71Sopenharmony_ciupdate(options: AnimatorOptions): void 725e41f4b71Sopenharmony_ci 726e41f4b71Sopenharmony_ci更新当前动画器。 727e41f4b71Sopenharmony_ci 728e41f4b71Sopenharmony_ci从API version9开始不再维护,建议使用[reset<sup>9+</sup>](#reset9) 729e41f4b71Sopenharmony_ci 730e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 731e41f4b71Sopenharmony_ci 732e41f4b71Sopenharmony_ci**参数:** 733e41f4b71Sopenharmony_ci 734e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 735e41f4b71Sopenharmony_ci| ------- | ----------------------------------- | ---- | ------- | 736e41f4b71Sopenharmony_ci| options | [AnimatorOptions](#animatoroptions) | 是 | 定义动画选项。 | 737e41f4b71Sopenharmony_ci 738e41f4b71Sopenharmony_ci**示例:** 739e41f4b71Sopenharmony_ci 740e41f4b71Sopenharmony_ci```ts 741e41f4b71Sopenharmony_cianimator.update(options); 742e41f4b71Sopenharmony_ci``` 743e41f4b71Sopenharmony_ci 744e41f4b71Sopenharmony_ci## createAnimator<sup>(deprecated)</sup> 745e41f4b71Sopenharmony_ci 746e41f4b71Sopenharmony_cicreateAnimator(options: AnimatorOptions): AnimatorResult 747e41f4b71Sopenharmony_ci 748e41f4b71Sopenharmony_ci定义Animator类。 749e41f4b71Sopenharmony_ci 750e41f4b71Sopenharmony_ci从API version9开始不再维护,建议使用[create<sup>9+</sup>](#create9) 751e41f4b71Sopenharmony_ci 752e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 753e41f4b71Sopenharmony_ci 754e41f4b71Sopenharmony_ci**参数:** 755e41f4b71Sopenharmony_ci 756e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 757e41f4b71Sopenharmony_ci| ------- | ----------------------------------- | ---- | ------- | 758e41f4b71Sopenharmony_ci| options | [AnimatorOptions](#animatoroptions) | 是 | 定义动画选项。 | 759e41f4b71Sopenharmony_ci 760e41f4b71Sopenharmony_ci**返回值:** 761e41f4b71Sopenharmony_ci 762e41f4b71Sopenharmony_ci| 类型 | 说明 | 763e41f4b71Sopenharmony_ci| --------------------------------- | ------------- | 764e41f4b71Sopenharmony_ci| [AnimatorResult](#animatorresult) | Animator结果接口。 | 765e41f4b71Sopenharmony_ci 766e41f4b71Sopenharmony_ci**示例:** 767e41f4b71Sopenharmony_ci 768e41f4b71Sopenharmony_ci```ts 769e41f4b71Sopenharmony_ciimport { Animator as animator, AnimatorResult } from '@kit.ArkUI'; 770e41f4b71Sopenharmony_ci 771e41f4b71Sopenharmony_cilet options: AnimatorOptions = { // xxx.js文件中不需要强调显式类型AnimatorOptions 772e41f4b71Sopenharmony_ci duration: 1500, 773e41f4b71Sopenharmony_ci easing: "friction", 774e41f4b71Sopenharmony_ci delay: 0, 775e41f4b71Sopenharmony_ci fill: "forwards", 776e41f4b71Sopenharmony_ci direction: "normal", 777e41f4b71Sopenharmony_ci iterations: 3, 778e41f4b71Sopenharmony_ci begin: 200.0, 779e41f4b71Sopenharmony_ci end: 400.0, 780e41f4b71Sopenharmony_ci}; 781e41f4b71Sopenharmony_cithis.animator = animator.createAnimator(options); 782e41f4b71Sopenharmony_ci```