cancel-animation-frame.uvue 1023 字节
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
<template>
  <view class="page">
    <page-head :title="title"></page-head>
    <button @click="startRequestAnimationFrame">requestAnimationFrame</button>
    <button @click="stopRequestAnimationFrame">cancelAnimationFrame</button>
    <text class="frame-count">{{testFrameCount}}</text>
  </view>
</template>

<script>
  export default {
    data() {
      return {
        title: 'cancelAnimationFrame',
        taskId: 0,
        testFrameCount: 0
      }
    },
    onUnload() {
      if (this.taskId > 0) {
        this.stopRequestAnimationFrame()
      }
    },
    methods: {
      startRequestAnimationFrame() {
26
        this.taskId = requestAnimationFrame((_ : number) => {
27 28 29 30 31
          this.testFrameCount++
          this.startRequestAnimationFrame()
        })
      },
      stopRequestAnimationFrame() {
32
        cancelAnimationFrame(this.taskId)
33 34 35 36 37 38 39 40 41 42 43 44 45 46
      }
    }
  }
</script>

<style>
  .page {
    padding: 15px;
  }

  .frame-count {
    margin-top: 15px;
  }
</style>