从first页面进入index运动页后开始运动,倒计时开始,每隔一段时间换一张图,进入下一个运动
    一组运动做完后,提示用户是否休息,如果选择休息,则回到first页面
    如果选择继续运动,则重置数据,继续运动

    1. <view class="container">
    2. <view>
    3. <text>预备,开始!</text>
    4. <text>{{index+1}}/{{runname.length}} {{runname[index]}}</text>
    5. </view>
    6. <image class='action' src='{{imglist[index]}}' mode='aspectFit'></image>
    7. <view class='time'>
    8. <text>{{count}}</text>
    9. </view>
    10. </view>
    1. Page({
    2. data: {
    3. imglist: ["/assets/images/qs1.GIF", "/assets/images/qs2.GIF", "/assets/images/qs3.GIF",
    4. "/assets/images/qs4.GIF"], //图片列表
    5. runname: ["呼啦圈", "举重", "跳绳", "哑铃"], //动作名称
    6. index: 0, //索引,记录到当前第几个
    7. count: 8, //每个动作持续时间,用来显示时间变化(s)
    8. total: 8, //每个动作持续时间,固定值(s)
    9. timer: null //定时器,当离开页面时需要清除定时器
    10. },
    11. changeTimer: function() {
    12. var that = this
    13. //判断如果已经做到最后一个动作
    14. if (this.data.index == this.data.imglist.length) {
    15. //给出提示,是重做运动,还是回到主页
    16. wx.showModal({
    17. title: '提示',
    18. content: '运动完成',
    19. confirmText:"休息一下",
    20. cancelText:"继续运动",
    21. success: function(res) {
    22. if (res.confirm) {
    23. clearTimeout(that.data.timer)
    24. that.setData({
    25. index: 0,
    26. count: that.data.total
    27. })
    28. wx.navigateTo({
    29. url: '/pages/first/first',
    30. })
    31. } else if (res.cancel) {
    32. //再做一遍,重置初始值
    33. that.setData({
    34. index:0
    35. },function(){
    36. that.changeTimer()
    37. })
    38. }
    39. }
    40. })
    41. } else {
    42. this.data.timer = setTimeout(() => {
    43. //时间递减
    44. this.setData({
    45. count: this.data.count -1
    46. })
    47. if (this.data.count <= 0) {
    48. //当时间到0,进入下一个动作
    49. this.setData({
    50. index: this.data.index + 1,
    51. count: that.data.total
    52. })
    53. this.changeTimer()
    54. } else {
    55. this.changeTimer()
    56. }
    57. }, 1000);
    58. }
    59. },
    60. /**
    61. * 生命周期函数‐‐监听页面显示
    62. */
    63. onShow: function() {
    64. var that = this;
    65. this.setData({
    66. count: that.data.total
    67. })
    68. this.changeTimer()
    69. },
    70. /**
    71. * 生命周期函数‐‐监听页面隐藏
    72. */
    73. onHide: function() {
    74. clearTimeout(this.data.timer)
    75. },
    76. /**
    77. * 生命周期函数‐‐监听页面卸载
    78. */
    79. onUnload: function() {
    80. clearTimeout(this.data.timer)
    81. }
    82. })

    image.png