index.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. // components/loading/index.js
  2. Component({
  3. /**
  4. * 组件的属性列表
  5. */
  6. properties: {
  7. },
  8. /**
  9. * 组件的初始数据
  10. */
  11. data: {
  12. progress: 0,
  13. progressText: 0,
  14. showProgressBar: true,
  15. showLogo: false,
  16. showExploreButton: false
  17. },
  18. /**
  19. * 组件的方法列表
  20. */
  21. methods: {
  22. // 点击"开始探索"按钮
  23. goToIndexPage() {
  24. console.log(111111)
  25. // 触发自定义事件,通知父组件
  26. this.triggerEvent('startexplore');
  27. // 设置已访问标记
  28. wx.setStorageSync('hasVisited', true);
  29. },
  30. // 开始进度条动画
  31. startProgress() {
  32. const duration = 3000; // 3秒
  33. const interval = 30; // 每30ms更新一次
  34. const steps = duration / interval;
  35. const increment = 100 / steps;
  36. const timer = setInterval(() => {
  37. let currentProgress = this.data.progress + increment;
  38. if (currentProgress >= 100) {
  39. clearInterval(timer);
  40. currentProgress = 100;
  41. this.setData({
  42. progress: currentProgress,
  43. progressText: Math.floor(currentProgress)
  44. });
  45. // 进度条完成后,延迟显示logo
  46. setTimeout(() => {
  47. this.setData({
  48. showProgressBar: false,
  49. showLogo: true
  50. });
  51. // logo显示2秒后,显示"开始探索"按钮
  52. setTimeout(() => {
  53. this.setData({
  54. showExploreButton: true
  55. });
  56. }, 2000);
  57. }, 500);
  58. } else {
  59. this.setData({
  60. progress: currentProgress,
  61. progressText: Math.floor(currentProgress)
  62. });
  63. }
  64. }, interval);
  65. }
  66. },
  67. /**
  68. * 组件生命周期
  69. */
  70. lifetimes: {
  71. attached() {
  72. // 组件实例进入页面节点树时执行
  73. this.startProgress();
  74. }
  75. }
  76. });