查看: 1358|回复: 1

[源码] 一个简单的易语言播放器分享 成品+源码

[复制链接]
累计签到:381 天
连续签到:1 天

53

主题

131

回帖

6659

积分

星主

名望
236
星币
4176
星辰
7
好评
35

欢乐天使奖灌水天才奖鼎力支持奖幸运猪星辰勋章优秀会员奖明星会员奖魅力会员奖

QQ
发表于 2022-8-12 10:22:14 | 显示全部楼层 |阅读模式

注册登录后全站资源免费查看下载

您需要 登录 才可以下载或查看,没有账号?立即注册

×
成品+源码https://wwz.lanzout.com/iOxYN09em3yd
边学边写,弄了三四天,分享出来给大家参考以下吧。
另外程序有个BUG,反复点击播放6-10次左右有概率直接把程序玩死。有大佬能帮忙看看啥问题就更好了~
傲游截图20220812102136.png
  1. .版本 2
  2. .支持库 spec

  3. .程序集 窗口程序集_启动窗口
  4. .程序集变量 歌曲数, 整数型
  5. .程序集变量 歌单, 文本型, , "0"
  6. .程序集变量 i, 整数型, , , 第几首歌
  7. .程序集变量 s, 整数型, , , 歌曲播放进度
  8. .程序集变量 正在播放, 文本型
  9. .程序集变量 配置播放进度, 文本型
  10. .程序集变量 mp3状态, 整数型
  11. .程序集变量 播放状态展示, 文本型
  12. .程序集变量 播放列表展示内容, 文本型
  13. .程序集变量 运行目录, 文本型
  14. .程序集变量 运行目录长度, 整数型
  15. .程序集变量 文件名长度, 整数型
  16. .程序集变量 文件夹路径, 文本型
  17. .程序集变量 可否展示进度, 逻辑型
  18. .程序集变量 是否保存, 逻辑型
  19. .程序集变量 循环模式, 逻辑型

  20. .子程序 __启动窗口_创建完毕

  21. 运行目录 = 取运行目录 ()
  22. 选择框_保存进度.选中 = 读配置项 (取运行目录 () + “\播放进度.ini”, “保存进度”, “保存进度”, ) = “真”
  23. 单选框_列表循环.选中 = 读配置项 (取运行目录 () + “\播放进度.ini”, “循环模式”, “列表循环”, ) = “真”
  24. 单选框_单曲循环.选中 = 读配置项 (取运行目录 () + “\播放进度.ini”, “循环模式”, “单曲循环”, ) = “真”
  25. 单选框_随机播放.选中 = 读配置项 (取运行目录 () + “\播放进度.ini”, “循环模式”, “随机播放”, ) = “真”
  26. 置随机数种子 ()

  27. .如果真 (选择框_保存进度.选中)
  28.     配置播放进度 = 读配置项 (取运行目录 () + “\” + “播放进度.ini”, “歌曲列表”, “列表”, )
  29. .如果真结束
  30. s = 到整数 (读配置项 (取运行目录 () + “\” + “播放进度.ini”, “播放进度”, “进度”, ))
  31. 歌单 = 分割文本 (配置播放进度, “,”, )
  32. 歌曲数 = 取数组成员数 (歌单)  ' 读取歌曲数
  33. 可否展示进度 = 真


  34. .如果真 (歌曲数 = 0 或 i = 0)
  35.     滑块条1.禁止 = 真
  36. .如果真结束

  37. .如果真 (s ≠ 0)
  38.     按钮_暂停继续播放.标题 = “继续播放”
  39. .如果真结束

  40. .计次循环首 (歌曲数, i)  ' 添加播放进度到组合框1
  41.     组合框_音乐列表.加入项目 (歌单 [i] + #换行符, )
  42. .计次循环尾 ()


  43. .子程序 _按钮_选择文件_被单击

  44. ' 删除文件 (取运行目录 () + “\” + “播放进度.ini”)
  45. 歌单 = 多文件对话框 (“请选择”, “音乐文件.mp3|*.mp3”, , 取运行目录 (), , )  ' 载入播放进度
  46. 歌曲数 = 取数组成员数 (歌单)  ' 读取歌曲数
  47. .如果真 (歌曲数 = 0)
  48.     _按钮_选择文件_被单击 ()
  49. .如果真结束
  50. .计次循环首 (歌曲数, i)
  51.     配置播放进度 = 配置播放进度 + 歌单 [i] + “,”
  52. .计次循环尾 ()

  53. .如果真 (选择框_保存进度.选中)
  54.     写配置项 (取运行目录 () + “\” + “播放进度.ini”, “歌曲列表”, “列表”, 配置播放进度)  ' 写播放进度
  55. .如果真结束

  56. .计次循环首 (歌曲数, i)  ' 添加播放进度到组合框1
  57.     组合框_音乐列表.加入项目 (歌单 [i] + #换行符, )
  58. .计次循环尾 ()


  59. .子程序 _标签1_反馈事件, 整数型
  60. .参数 参数一, 整数型
  61. .参数 参数二, 整数型

  62. .如果真 (单选框_列表循环.选中)
  63.     .如果真 (参数一 = 100)
  64.         _按钮_下一首_被单击 ()  ' 播放完自动下一首
  65.     .如果真结束

  66. .如果真结束

  67. .如果真 (单选框_单曲循环.选中)
  68.     .如果真 (参数一 = 100)
  69.         s = 0
  70.         播放 ()
  71.     .如果真结束

  72. .如果真结束


  73. .如果真 (单选框_随机播放.选中)
  74.     .如果真 (参数一 = 100)
  75.         i = 取随机数 (1, 歌曲数)
  76.         s = 0
  77.         播放 ()
  78.     .如果真结束

  79. .如果真结束

  80. s = 参数一
  81. .如果真 (可否展示进度)
  82.     滑块条1.位置 = s
  83. .如果真结束
  84. .如果真 (歌曲数 ≠ 0)
  85.     滑块条1.禁止 = 假
  86. .如果真结束

  87. .如果真 (选择框_保存进度.选中)

  88. .如果真结束


  89. .子程序 播放
  90. .局部变量 歌曲名位置, 整数型

  91. 同步播放MP3 (歌单 [i], s, 标签1, )  ' 播放子程序
  92. 组合框_音乐列表.内容 = 歌单 [i]


  93. .子程序 _按钮_上一首_被单击

  94. .如果真 (单选框_随机播放.选中)
  95.     i = 取随机数 (1, 歌曲数)
  96.     s = 0
  97.     播放 ()
  98. .如果真结束

  99. .如果真 (单选框_列表循环.选中 或 单选框_单曲循环.选中)
  100.     .如果真 (歌曲数 = 0)
  101.         _按钮_选择文件_被单击 ()
  102.     .如果真结束
  103.     i = i - 1
  104.     s = 0
  105.     .如果真 (i < 1)
  106.         i = 歌曲数
  107.     .如果真结束
  108.     播放 ()
  109. .如果真结束


  110. .子程序 _按钮_下一首_被单击

  111. .如果真 (单选框_随机播放.选中)
  112.     i = 取随机数 (1, 歌曲数)
  113.     s = 0
  114.     播放 ()
  115. .如果真结束

  116. .如果真 (单选框_列表循环.选中 或 单选框_单曲循环.选中)
  117.     .如果真 (歌曲数 = 0)
  118.         _按钮_选择文件_被单击 ()
  119.     .如果真结束
  120.     i = i + 1
  121.     s = 0
  122.     .如果真 (i > 歌曲数)
  123.         i = 1
  124.     .如果真结束
  125.     播放 ()

  126. .如果真结束


  127. .子程序 __启动窗口_可否被关闭, 逻辑型

  128. .如果 (信息框 (“是否关闭当前窗口”, 1 + 32, “是否关闭当前窗口”, ) = 0)  ' 关闭窗口前确认
  129.     .如果真 (i ≠ 0)
  130.         写配置项 (取运行目录 () + “\播放进度.ini”, “保存进度”, “保存进度”, 选择 (选择框_保存进度.选中, “真”, “假”))
  131.         写配置项 (取运行目录 () + “\播放进度.ini”, “循环模式”, “列表循环”, 选择 (单选框_列表循环.选中, “真”, “假”))
  132.         写配置项 (取运行目录 () + “\播放进度.ini”, “循环模式”, “单曲循环”, 选择 (单选框_单曲循环.选中, “真”, “假”))
  133.         写配置项 (取运行目录 () + “\播放进度.ini”, “循环模式”, “随机播放”, 选择 (单选框_随机播放.选中, “真”, “假”))

  134.         .如果真 (选择框_保存进度.选中)
  135.             写配置项 (取运行目录 () + “\” + “播放进度.ini”, “播放进度”, “曲目”, 到文本 (i))  ' 写播放进度
  136.         .如果真结束
  137.         .如果真 (选择框_保存进度.选中)
  138.             写配置项 (取运行目录 () + “\” + “播放进度.ini”, “播放进度”, “进度”, 到文本 (s))  ' 写播放进度
  139.         .如果真结束

  140.     .如果真结束
  141.     返回 (真)
  142. .否则
  143.     返回 (假)
  144. .如果结束


  145. .子程序 _组合框_音乐列表_将弹出列表

  146. .如果真 (歌曲数 = 0)  ' 弹出列表时运行选择文件
  147.     _按钮_选择文件_被单击 ()
  148. .如果真结束


  149. .子程序 _组合框_音乐列表_列表项被选择
  150. .局部变量 f, 整数型

  151. f = 组合框_音乐列表.现行选中项
  152. i = f + 1
  153. s = 0
  154. 播放 ()

  155. .子程序 _按钮_暂停继续播放_被单击

  156. mp3状态 = 取MP3播放状态 ()
  157. .判断开始 (mp3状态 = 0)
  158.     i = 到整数 (读配置项 (取运行目录 () + “\” + “播放进度.ini”, “播放进度”, “曲目”, ))
  159.     .如果真 (歌曲数 = 0)
  160.         _按钮_选择文件_被单击 ()
  161.     .如果真结束
  162.     s = 到整数 (读配置项 (取运行目录 () + “\” + “播放进度.ini”, “播放进度”, “进度”, ))
  163.     s = s - 1
  164.     .如果真 (i > 歌曲数)
  165.         i = 1
  166.     .如果真结束
  167.     .如果真 (i = 0)
  168.         i = 1
  169.     .如果真结束
  170.     按钮_暂停继续播放.标题 = “暂停播放”
  171.     播放 ()
  172. .判断 (mp3状态 = -1)
  173.     继续播放MP3 ()
  174.     按钮_暂停继续播放.标题 = “暂停播放”
  175. .判断 (mp3状态 = 1)
  176.     暂停播放MP3 ()
  177.     按钮_暂停继续播放.标题 = “继续播放”
  178. .默认

  179. .判断结束


  180. .子程序 _滑块条1_位置被改变

  181. 可否展示进度 = 假
  182. 同步播放MP3 (歌单 [i], 滑块条1.位置, 标签1, )  ' 播放子程序
  183. 可否展示进度 = 真

  184. .子程序 _选择框_保存进度_被单击



  185. .子程序 _单选框_列表循环_被单击

  186. 循环模式 = 单选框_列表循环.选中
  187. 调试输出 (循环模式)


  188. .子程序 _单选框_单曲循环_被单击

  189. 循环模式 = 单选框_单曲循环.选中
  190. 调试输出 (循环模式)


  191. .子程序 _单选框_随机播放_被单击

  192. 循环模式 = 单选框_列表循环.选中
  193. 调试输出 (循环模式)
复制代码






点评

应该是用自带的组件播放的 楼主可以找一下bass模块 功能更强哦 代码有很多问题哦 比如选择一个mp3,会自动播放,然后再选择文件 选择同一个 在列表中有两个一样的 选择第2个 提示数组下标越界  发表于 2022-8-12 15:38
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|偏爱技术社区-偏爱技术吧-源码-科学刀-我爱辅助-娱乐网--教开服-游戏源码

偏爱技术社区-偏爱技术吧-源码-科学刀-我爱辅助-娱乐网-游戏源码

Powered by Discuz! X3.5

GMT+8, 2024-12-4 03:03 , Processed in 0.085623 second(s), 38 queries .

快速回复 返回顶部 返回列表