ts-components-canvas-lottie.md 20.5 KB
Newer Older
Z
zengyawen 已提交
1
# Lottie
Z
zengyawen 已提交
2

Z
zengyawen 已提交
3 4
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 从 API Version 8 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
Z
zengyawen 已提交
5 6


Z
zengyawen 已提交
7
## 权限列表
Z
zengyawen 已提交
8 9 10



Z
zengyawen 已提交
11 12

## 导入模块
Z
zengyawen 已提交
13 14

```
H
HelloCrease 已提交
15
import lottie from '@ohos/lottieETS'
Z
zengyawen 已提交
16 17
```

Z
zengyawen 已提交
18
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
H
HelloCrease 已提交
19
> 在Terminal窗口使用 `npm install @ohos/lottieETS` 命令下载Lottie。
Z
zengyawen 已提交
20 21 22 23 24 25 26 27 28 29 30


## lottie.loadAnimation

loadAnimation(

path: string, container: object, render: string, loop: boolean, autoplay: boolean, name: string ): AnimationItem

加载动画,须提前声明Animator('__lottie_ets')对象,并在Canvas完成布局后调用。可配合Canvas组件生命周期接口使用,比如onAppear()与onPageShow()。

- 参数
31 32 33 34 35 36 37 38 39
  | 参数             | 类型                          | 必填   | 描述                                       |
  | -------------- | --------------------------- | ---- | ---------------------------------------- |
  | path           | string                      | 是    | hap包内动画资源文件路径,仅支持json格式。示例:path: "common/lottie/data.json" |
  | container      | object                      | 是    | canvas绘图上下文,声明范式需提前声明CanvasRenderingContext2D。 |
  | render         | string                      | 是    | 渲染类型,仅支持“canvas”。                        |
  | loop           | boolean \| number | 否    | 动画播放结束后,是否循环播放,默认值true。值类型为number,且大于等于1时为设置的重复播放的次数。 |
  | autoplay       | boolean                     | 否    | 是否自动播放动画,默认值true。                        |
  | name           | string                      | 否    | 开发者自定义的动画名称,后续支持通过该名称引用控制动画,默认为空。        |
  | initialSegment | [number, number]       | 否    | 指定动画播放的起始帧号,指定动画播放的结束帧号。                 |
Z
zengyawen 已提交
40 41 42 43 44 45 46 47 48


## lottie.destroy

destroy(name: string): void

销毁动画,页面退出时,必须调用。可配合Canvas组件生命周期接口使用,比如onDisappear()与onPageHide()。

- 参数
49 50 51
  | 参数   | 类型     | 必填   | 描述                                       |
  | ---- | ------ | ---- | ---------------------------------------- |
  | name | string | 是    | 被指定的动画名,同loadAnimation接口参数name, 缺省时销毁所有动画。 |
Z
zengyawen 已提交
52 53 54 55

- 示例
  ```
  import lottie from 'lottie-web'
56

Z
zengyawen 已提交
57 58 59 60 61 62 63
  @Entry
  @Component
  struct Index {
    private controller: CanvasRenderingContext2D = new CanvasRenderingContext2D()
    private animateName: string = "animate"
    private animatePath: string = "common/lottie/data.json"
    private animateItem: any = null
64

Z
zengyawen 已提交
65 66 67 68
    private onPageHide(): void {
      console.log('onPageHide')
      lottie.destroy()
    }
69

Z
zengyawen 已提交
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
    build() {
      Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
        Canvas(this.controller)
        .width('30%')
        .height('20%')
        .backgroundColor('#0D9FFB')
        .onAppear(() => {
          console.log('canvas onAppear');
          this.animateItem = lottie.loadAnimation({
            container: this.controller,
            renderer: 'canvas',
            loop: true,
            autoplay: true,
            name: this.animateName,
            path: this.animatePath,
          })
        })
87

Z
zengyawen 已提交
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
        Animator('__lottie_ets') // declare Animator('__lottie_ets') when use lottie
        Button('load animation')
          .onClick(() => {
          if (this.animateItem != null) {
            this.animateItem.destroy()
            this.animateItem = null
          }
          this.animateItem = lottie.loadAnimation({
            container: this.controller,
            renderer: 'canvas',
            loop: true,
            autoplay: true,
            name: this.animateName,
            path: this.animatePath,
            initialSegment: [10, 50],
Z
zengyawen 已提交
103
          })
Z
zengyawen 已提交
104
        })
105

Z
zengyawen 已提交
106 107 108 109
        Button('destroy animation')
          .onClick(() => {
            lottie.destroy(this.animateName)
            this.animateItem = null
Z
zengyawen 已提交
110 111
          })
      }
Z
zengyawen 已提交
112 113
      .width('100%')
      .height('100%')
Z
zengyawen 已提交
114
    }
Z
zengyawen 已提交
115 116
  }
  ```
Z
zengyawen 已提交
117

Z
zengyawen 已提交
118
  ![zh-cn_image_0000001194352468](figures/zh-cn_image_0000001194352468.gif)
Z
zengyawen 已提交
119 120


Z
zengyawen 已提交
121
## lottie.play
Z
zengyawen 已提交
122

Z
zengyawen 已提交
123
play(name: string): void
Z
zengyawen 已提交
124 125 126

播放指定动画。

Z
zengyawen 已提交
127
- 参数
128 129 130
  | 参数   | 类型     | 必填   | 描述                                       |
  | ---- | ------ | ---- | ---------------------------------------- |
  | name | string | 是    | 被指定的动画名, 同loadAnimation接口参数name,缺省时播放所有动画。 |
Z
zengyawen 已提交
131 132 133 134 135 136 137 138 139 140 141 142 143 144

- 示例
  ```
  lottie.play(this.animateName)
  ```


## lottie.pause

pause(name: string): void

暂停指定动画,下次调用lottie.play()从当前帧开始。

- 参数
145 146 147
  | 参数   | 类型     | 必填   | 描述                                       |
  | ---- | ------ | ---- | ---------------------------------------- |
  | name | string | 是    | 被指定的动画名,同loadAnimation接口入参name,缺省时暂停所有动画。 |
Z
zengyawen 已提交
148 149 150 151 152 153 154 155 156 157 158 159 160 161

- 示例
  ```
  lottie.pause(this.animateName)
  ```


## lottie.togglePause

togglePause(name: string): void

暂停或播放指定动画,等效于lottie.play()与lottie.pause()切换调用。

- 参数
162 163 164
  | 参数   | 类型     | 必填   | 描述                                       |
  | ---- | ------ | ---- | ---------------------------------------- |
  | name | string | 是    | 被指定的动画名,同loadAnimation接口参数name,缺省时停止所有动画。 |
Z
zengyawen 已提交
165 166 167 168 169 170 171 172 173 174 175 176 177 178

- 示例
  ```
  lottie.togglePause(this.animateName)
  ```


## lottie.stop

stop(name: string): void

停止指定动画,下次调用lottie.play()从第一帧开始。

- 参数
179 180 181
  | 参数   | 类型     | 必填   | 描述                                       |
  | ---- | ------ | ---- | ---------------------------------------- |
  | name | string | 是    | 被指定的动画名,同loadAnimation接口参数name,缺省时停止所有动画。 |
Z
zengyawen 已提交
182 183 184 185 186 187 188 189 190 191

- 示例
  ```
  lottie.stop(this.animateName)
  ```


## lottie.setSpeed

setSpeed(speed: number, name: string): void
Z
zengyawen 已提交
192 193 194

设置指定动画播放速度。

Z
zengyawen 已提交
195
- 参数
196 197 198 199
  | 参数    | 类型     | 必填   | 描述                                       |
  | ----- | ------ | ---- | ---------------------------------------- |
  | speed | number | 是    | 值为浮点类型, speed>0正向播放, speed<0反向播放, speed=0暂停播放, speed=1.0/-1.0正常速度播放。 |
  | name  | string | 是    | 被指定的动画,同loadAnimation接口参数name,缺省时停止所有动画。 |
Z
zengyawen 已提交
200 201 202 203 204 205 206 207 208 209

- 示例
  ```
  lottie.setSpeed(5, this.animateName)
  ```


## lottie.setDirection

setDirection(direction: AnimationDirection, name: string): void
Z
zengyawen 已提交
210 211 212

设置指定动画播放顺序。

Z
zengyawen 已提交
213
- 参数
214 215 216 217
  | 参数        | 类型                 | 必填   | 描述                                       |
  | --------- | ------------------ | ---- | ---------------------------------------- |
  | direction | AnimationDirection | 是    | 1为正向,-1为反向;&nbsp;当设置为反向时,从当前播放进度开始回播直到首帧,loop值为true时可无限倒放;speed&lt;0叠加时也是倒放。<br/>AnimationDirection:1&nbsp;\|&nbsp;-1 |
  | name      | string             | 是    | 被指定的动画名,同loadAnimation接口参数name,缺省时设置所有动画方向。 |
Z
zengyawen 已提交
218 219 220 221 222 223 224 225

- 示例
  ```
  lottie.setDirection(-1, this.animateName)
  ```


## AnimationItem
Z
zengyawen 已提交
226 227 228

loadAnimation接口的返回对象,具有属性与接口。属性描述如下:

229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250
| 参数名称              | 参数类型                                     | 参数描述                                     |
| ----------------- | ---------------------------------------- | ---------------------------------------- |
| name              | string                                   | 动画名称。                                    |
| isLoaded          | boolean                                  | 动画是否已加载。                                 |
| currentFrame      | number                                   | 当前播放的帧号,&nbsp;默认精度为&gt;=0.0的浮点数,&nbsp;调用setSubframe(false)后精度为去小数点后的正整数。 |
| currentRawFrame   | number                                   | 当前播放帧数,&nbsp;精度为&gt;=0.0的浮点数。            |
| firstFrame        | number                                   | 当前播放片段的第一帧帧号。                            |
| totalFrames       | number                                   | 当前播放片段的总帧数。                              |
| frameRate         | number                                   | 帧率&nbsp;(frame/s)。                       |
| frameMult         | number                                   | 帧率&nbsp;(frame/ms)。                      |
| playSpeed         | number                                   | 值为浮点类型,&nbsp;speed&gt;0正向播放,&nbsp;speed&lt;0反向播放,&nbsp;speed=0暂停播放,&nbsp;speed=1.0&nbsp;\|&nbsp;-1.0正常速度播放。 |
| playDirection     | number                                   | 播放方向,&nbsp;1为正放,&nbsp;-1为倒放。             |
| playCount         | number                                   | 动画完成播放的次数。                               |
| isPaused          | boolean                                  | 当前动画是否已暂停,&nbsp;值为true动画已暂停。             |
| autoplay          | boolean                                  | 加载动画后是否自动播放,&nbsp;若值为false需要再调用play()接口开始播放。 |
| loop              | boolean&nbsp;\|&nbsp;number              | 类型为boolean时是否循环播放,&nbsp;类型为number时播放次数。  |
| renderer          | any                                      | 动画渲染对象,&nbsp;根据渲染类型而定。                   |
| animationID       | string                                   | 动画ID。                                    |
| timeCompleted     | number                                   | 当前动画片段完成单次播放的帧数,&nbsp;受AnimationSegment设置影响,&nbsp;与totalFrames属性值相同。 |
| segmentPos        | number                                   | 当前动画片段序号,&nbsp;值为&gt;=0的正整数。             |
| isSubframeEnabled | boolean                                  | 关联了currentFrame的精度是否为浮点数。                |
| segments          | AnimationSegment&nbsp;\|&nbsp;AnimationSegment[] | 当前动画的播放片段。                               |
Z
zengyawen 已提交
251 252 253 254 255


## AnimationItem.play

play(name?: string): void
Z
zengyawen 已提交
256 257 258

播放动画。

Z
zengyawen 已提交
259
- 参数
260 261 262
  | 参数   | 类型     | 必填   | 描述              |
  | ---- | ------ | ---- | --------------- |
  | name | string | 否    | 被指定的动画名,缺省默认为空。 |
Z
zengyawen 已提交
263 264 265 266 267 268 269 270 271 272

- 示例
  ```
  this.animateItem.play()
  ```


## AnimationItem.destroy

destroy(name?: string): void
Z
zengyawen 已提交
273 274 275

销毁动画。

Z
zengyawen 已提交
276
- 参数
277 278 279
  | 参数   | 类型     | 必填   | 描述              |
  | ---- | ------ | ---- | --------------- |
  | name | string | 否    | 被指定的动画名,缺省默认为空。 |
Z
zengyawen 已提交
280 281 282 283 284 285 286 287 288 289

- 示例
  ```
  this.animateItem.destroy()
  ```


## AnimationItem.pause

pause(name?: string): void
Z
zengyawen 已提交
290 291 292

暂停动画,下次调用play接口从当前帧开始播放。

Z
zengyawen 已提交
293
- 参数
294 295 296
  | 参数   | 类型     | 必填   | 描述              |
  | ---- | ------ | ---- | --------------- |
  | name | string | 否    | 被指定的动画名,缺省默认为空。 |
Z
zengyawen 已提交
297 298 299 300 301 302 303 304 305 306

- 示例
  ```
  this.animateItem.pause()
  ```


## AnimationItem.togglePause

togglePause(name?: string): void
Z
zengyawen 已提交
307 308 309

暂停或播放动画,等效于play接口与pause接口之间轮换调用。

Z
zengyawen 已提交
310
- 参数
311 312 313
  | 参数   | 类型     | 必填   | 描述              |
  | ---- | ------ | ---- | --------------- |
  | name | string | 否    | 被指定的动画名,缺省默认为空。 |
Z
zengyawen 已提交
314 315 316 317 318 319 320 321 322 323

- 示例
  ```
  this.animateItem.togglePause()
  ```


## AnimationItem.stop

stop(name?: string): void
Z
zengyawen 已提交
324 325 326

停止动画,下次调用play接口从第一帧开始播放。

Z
zengyawen 已提交
327
- 参数
328 329 330
  | 参数   | 类型     | 必填   | 描述              |
  | ---- | ------ | ---- | --------------- |
  | name | string | 否    | 被指定的动画名,缺省默认为空。 |
Z
zengyawen 已提交
331 332 333 334 335 336 337 338 339 340

- 示例
  ```
  this.animateItem.stop()
  ```


## AnimationItem.setSpeed

setSpeed(speed: number): void
Z
zengyawen 已提交
341 342 343

设置动画播放速度。

Z
zengyawen 已提交
344
- 参数
345 346 347
  | 参数    | 类型     | 必填   | 描述                                       |
  | ----- | ------ | ---- | ---------------------------------------- |
  | speed | number | 是    | 值为浮点类型,&nbsp;speed&gt;0正向播放,&nbsp;speed&lt;0反向播放,&nbsp;speed=0暂停播放,&nbsp;speed=1.0&nbsp;\|&nbsp;-1.0正常速度播放。 |
Z
zengyawen 已提交
348 349 350 351 352

- 示例
  ```
  this.animateItem.setSpeed(5);
  ```
Z
zengyawen 已提交
353 354


Z
zengyawen 已提交
355
## AnimationItem.setDirection
Z
zengyawen 已提交
356

Z
zengyawen 已提交
357
setDirection(direction: AnimationDirection): void
Z
zengyawen 已提交
358

Z
zengyawen 已提交
359
设置动画播放顺序。
Z
zengyawen 已提交
360

Z
zengyawen 已提交
361
- 参数
362 363 364
  | 参数        | 类型                 | 必填   | 描述                                       |
  | --------- | ------------------ | ---- | ---------------------------------------- |
  | direction | AnimationDirection | 是    | 1为正向,-1为反向;&nbsp;当设置为反向时,从当前播放进度开始回播直到首帧,loop值为true时可无限倒放;speed&lt;0叠加时也是倒放。<br/>AnimationDirection:1&nbsp;\|&nbsp;-1。 |
Z
zengyawen 已提交
365

Z
zengyawen 已提交
366 367 368 369
- 示例
  ```
  this.animateItem.setDirection(-1)
  ```
Z
zengyawen 已提交
370 371


Z
zengyawen 已提交
372
## AnimationItem.goToAndStop
Z
zengyawen 已提交
373

H
HelloCrease 已提交
374
goToAndStop(value: number, isFrame?: boolean): void
Z
zengyawen 已提交
375 376 377

设置动画停止在指定帧或时间进度。

Z
zengyawen 已提交
378
- 参数
379 380 381 382 383
  | 参数      | 类型      | 必填   | 描述                                       |
  | ------- | ------- | ---- | ---------------------------------------- |
  | value   | number  | 是    | 帧号(值大于等于0)或时间进度(ms)。                     |
  | isFrame | boolean | 否    | true:&nbsp;按指定帧控制,false:按指定时间控制,缺省默认false。 |
  | name    | string  | 否    | 被指定的动画名,缺省默认为空。                          |
Z
zengyawen 已提交
384 385 386 387 388 389 390 391 392 393 394 395

- 示例
  ```
  // 按帧号控制
  this.animateItem.goToAndStop(25, true)
  // 按时间进度控制
  this.animateItem.goToAndStop(300, false, this.animateName)
  ```


## AnimationItem.goToAndPlay

H
HelloCrease 已提交
396
goToAndPlay(value: number, isFrame: boolean, name?: string): void
Z
zengyawen 已提交
397 398 399

设置动画从指定帧或时间进度开始播放。

Z
zengyawen 已提交
400
- 参数
401 402 403 404 405
  | 参数      | 类型      | 必填   | 描述                                       |
  | ------- | ------- | ---- | ---------------------------------------- |
  | value   | number  | 是    | 帧号(值大于等于0)或时间进度(ms)                      |
  | isFrame | boolean | 是    | true:按指定帧控制,&nbsp;false:按指定时间控制,缺省默认false。 |
  | name    | string  | 否    | 被指定的动画名,缺省默认为空。                          |
Z
zengyawen 已提交
406 407 408 409 410 411 412 413 414 415 416 417 418

- 示例
  ```
  // 按帧号控制
  this.animateItem.goToAndPlay(25, true)
  // 按时间进度控制
  this.animateItem.goToAndPlay(300, false, this.animateName)
  ```


## AnimationItem.playSegments

playSegments(segments: AnimationSegment | AnimationSegment[], forceFlag: boolean): void
Z
zengyawen 已提交
419 420 421

设置动画仅播放指定片段。

Z
zengyawen 已提交
422
- 参数
423 424 425 426
  | 参数        | 类型                                       | 必填   | 描述                                       |
  | --------- | ---------------------------------------- | ---- | ---------------------------------------- |
  | segments  | AnimationSegment&nbsp;=&nbsp;[number,&nbsp;number]&nbsp;\|&nbsp;AnimationSegment[] | 是    | 片段或片段列表;<br/>如果片段列表全部播放完毕后,下轮循环播放仅播放最后一个片段 |
  | forceFlag | boolean                                  | 是    | true:即时生效播放,false:延迟到下轮循环播放再生效           |
Z
zengyawen 已提交
427

Z
zengyawen 已提交
428 429 430 431 432 433 434
- 示例
  ```
  // 指定播放片段
  this.animateItem.playSegments([10, 20], false)
  // 指定播放片段列表
  this.animateItem.playSegments([[0, 5], [20, 30]], true)
  ```
Z
zengyawen 已提交
435 436


Z
zengyawen 已提交
437
## AnimationItem.resetSegments
Z
zengyawen 已提交
438

Z
zengyawen 已提交
439
resetSegments(forceFlag: boolean): void
Z
zengyawen 已提交
440

Z
zengyawen 已提交
441
重置动画播放片段,播放全帧。
Z
zengyawen 已提交
442

Z
zengyawen 已提交
443
- 参数
444 445 446
  | 参数        | 类型      | 必填   | 描述                             |
  | --------- | ------- | ---- | ------------------------------ |
  | forceFlag | boolean | 是    | true:即时生效播放,false:延迟到下轮循环播放再生效 |
Z
zengyawen 已提交
447

Z
zengyawen 已提交
448 449 450 451
- 示例
  ```
  this.animateItem.resetSegments(true)
  ```
Z
zengyawen 已提交
452 453


Z
zengyawen 已提交
454
## AnimationItem.resize
Z
zengyawen 已提交
455

Z
zengyawen 已提交
456
resize(): void
Z
zengyawen 已提交
457

Z
zengyawen 已提交
458
刷新动画布局。
Z
zengyawen 已提交
459

Z
zengyawen 已提交
460 461 462 463
- 示例
  ```
  this.animateItem.resize()
  ```
Z
zengyawen 已提交
464 465


Z
zengyawen 已提交
466
## AnimationItem.setSubframe
Z
zengyawen 已提交
467

Z
zengyawen 已提交
468
setSubframe(useSubFrame: boolean): void
Z
zengyawen 已提交
469 470 471

设置属性currentFrame的精度显示浮点数。

Z
zengyawen 已提交
472
- 参数
473 474 475
  | 参数           | 类型      | 必填   | 描述                                       |
  | ------------ | ------- | ---- | ---------------------------------------- |
  | useSubFrames | boolean | 是    | currentFrame属性默认显示浮点数,该接口参数将影响currentFrame属性的精度。<br/>true:属性currentFrame显示浮点。<br/>false:属性currentFrame去浮点数显示整数。 |
Z
zengyawen 已提交
476 477 478 479 480 481 482 483 484 485 486 487 488 489

- 示例
  ```
  this.animateItem.setSubframe(false)
  ```


## AnimationItem.getDuration

getDuration(inFrames?: boolean): void

获取动画单次完整播放的时间(与播放速度无关)或帧数, 与Lottie.loadAnimation接口入参initialSegment有关。

- 参数
490 491 492
  | 参数       | 类型      | 必填   | 描述                                       |
  | -------- | ------- | ---- | ---------------------------------------- |
  | inFrames | boolean | 否    | true:获取帧数,&nbsp;false:获取时间(单位ms),缺省默认false。 |
Z
zengyawen 已提交
493 494 495 496 497 498 499 500 501 502

- 示例
  ```
  this.animateItem.getDuration(true)
  ```


## AnimationItem.addEventListener

addEventListener&lt;T = any&gt;(name: AnimationEventName, callback: AnimationEventCallback&lt;T&gt;): () =&gt; void
Z
zengyawen 已提交
503 504 505

添加侦听事件, 事件完成后会触发指定回调函数。返回可删除该侦听事件的函数对象。

Z
zengyawen 已提交
506
- 参数
507 508 509 510
  | 参数       | 类型                              | 必填   | 描述                                       |
  | -------- | ------------------------------- | ---- | ---------------------------------------- |
  | name     | AnimationEventName              | 是    | 指定动画事件类型,Lottie内置动画事件类型AnimationEventName:<br/>'enterFrame'、'loopComplete'、'complete'、'segmentStart'、'destroy'、'config_ready'、'data_ready'、'DOMLoaded'、'error'、'data_failed'、'loaded_images' |
  | callback | AnimationEventCallback&lt;T&gt; | 是    | 用户自定义回调函数                                |
Z
zengyawen 已提交
511

Z
zengyawen 已提交
512 513 514 515 516 517
- 示例
  ```
  private callbackItem: any = function() {
      console.log("grunt loopComplete")
  }
  let delFunction = this.animateItem.addEventListener('loopComplete', this.animateName)
518

Z
zengyawen 已提交
519 520 521
  // 删除侦听
  delFunction()
  ```
Z
zengyawen 已提交
522 523


Z
zengyawen 已提交
524 525 526
## AnimationItem.removeEventListener

removeEventListener&lt;T = any&gt;(name: AnimationEventName, callback?: AnimationEventCallback&lt;T&gt;): void
Z
zengyawen 已提交
527 528 529

删除侦听事件。

Z
zengyawen 已提交
530
- 参数
531 532 533 534
  | 参数       | 类型                              | 必填   | 描述                                       |
  | -------- | ------------------------------- | ---- | ---------------------------------------- |
  | name     | AnimationEventName              | 是    | 指定动画事件类型,Lottie内置动画事件类型AnimationEventName:<br/>'enterFrame'、'loopComplete'、'complete'、'segmentStart'、'destroy'、'config_ready'、'data_ready'、'DOMLoaded'、'error'、'data_failed'、'loaded_images' |
  | callback | AnimationEventCallback&lt;T&gt; | 是    | 用户自定义回调函数;缺省为空时,&nbsp;删除此事件的所有回调函数。      |
Z
zengyawen 已提交
535

Z
zengyawen 已提交
536 537 538 539
- 示例
  ```
  this.animateItem.removeEventListener('loopComplete', this.animateName)
  ```
Z
zengyawen 已提交
540 541


Z
zengyawen 已提交
542 543 544 545 546
## AnimationItem.triggerEvent

triggerEvent&lt;T = any&gt;(name: AnimationEventName, args: T): void

直接触发指定事件的所有已设置的回调函数。
Z
zengyawen 已提交
547

Z
zengyawen 已提交
548
- 参数
549 550 551 552
  | 参数   | 类型                 | 必填   | 描述        |
  | ---- | ------------------ | ---- | --------- |
  | name | AnimationEventName | 是    | 指定动画事件类型  |
  | args | any                | 是    | 用户自定义回调参数 |
Z
zengyawen 已提交
553 554 555 556 557 558

- 示例
  ```
  private triggerCallBack: any = function(item) {
      console.log("trigger loopComplete, name:" + item.name)
  }
559

Z
zengyawen 已提交
560 561 562 563
  this.animateItem.addEventListener('loopComplete', this.triggerCallBack)
  this.animateItem.triggerEvent('loopComplete', this.animateItem)
  this.animateItem.removeEventListener('loopComplete', this.triggerCallBack)
  ```