歌曲播放原理

一开始要有一个Song类,在类外面定义枚举,在里面放四种状态,

为:已播放,未播放,重唱,切歌

在类里把歌曲名称和路径封装成字段

起初每首歌的状态默认为未播放

通过MadeSongPlayed(),MadeSongAgain(),MadeSongCut()这几种方法

可以实现分别将歌曲状态改为已播放,重唱,切歌的功能

当你在歌曲列表页面想要点击播放一首歌的时候

因为现在的歌曲名和歌手只是两个字符串,所以你要先创建一个歌曲对象

此外,还要在PlayList类里写一个方法获取当前播放的歌曲, 既然是获取当前播放的歌曲,返回值肯定是Song类型

因为你不可能只听一首歌并且只能听一遍,所有还要实现自动播放下一首的功能,所以还要有一个方法

public void NextSong()

{

if(SongList[SongIndex]!=null)

{

SongIndex++;

}

}

然后就看FrmPlay里的代码就容易了

每播放一首歌要将它的状态改为已播放

当一首歌播放完之后,播放器停止了 这时候要进行释放 将歌曲再设为null

这样FrmPlay控件就又会走调用GetSong来播放歌曲的代码,循环下去就实现了自动播放下一首的功能

KTV歌曲播放原理的更多相关文章

  1. KTV点歌系统播放原理

    北大青鸟KTV点歌系统播放原理 指导老师--原玉明 1.首先知道有两个类(PlayList   Song) PlayList类中有一方法 public static bool AddSong(Song ...

  2. 【代码笔记】iOS-仿QQ空间,歌曲播放

    一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> #import <AVFoundation/AVFo ...

  3. 小学生之KTV播放原理

    第一步: 创建一个Song类 //歌曲名称 public  string SongName { get; set; } //歌曲路劲 public string SongPath { get; set ...

  4. 网易云歌词解析(配合audio标签实现本地歌曲播放,歌词同步)

    先看下效果 github上做的一个音乐播放器: https://github.com/SorrowX/electron-music 中文歌曲 英文歌曲(如果有翻译的中文给回返回出去) 韩文歌曲 来看下 ...

  5. vue-music 跨域获取QQ音乐歌曲播放源

    这个问题困扰了我很久,一直获取不到正确的播放源,qq对这块限制更加严格了 按照之前老师在视频中的写法,已经不能获取到播放源了 下面来分析一下正确的播放源url:http://dl.stream.qqm ...

  6. 多线程下载网络歌曲&播放歌曲&并用seekbar调节进度&显示歌曲两边的时间

    这里先给一个处理时间格式的代码: /** * 时间的处理 *  * @param time * @return */ public static String getTimeFromInt(int t ...

  7. 歌曲播放页面的数据vuex管理

    1.state.js import {playMode} from '@/common/js/config' const state = { singer:{}, playing:false, ful ...

  8. KTV项目 SQL数据库的应用 结合C#应用窗体

    五道口北大青鸟校区 KTV项目 指导老师:袁玉明 歌曲播放原理 SQL数据库关系图 C#解决方案类图 第一步:创建数据库连接方法和打开方法和关闭方法! public class DBHelper { ...

  9. Swift - 歌曲播放样例(附带播放时间和播放进度)

    使用MPMoviePlayerController我们可以是进行音乐播放,下面是一个播放器样例.同时,播放时还可以显示播放时间和播放进度. 1 2 3 4 5 6 7 8 9 10 11 12 13 ...

随机推荐

  1. AndroidStudio 3.0中之后无法打开DDMS [Android Device Monitor] 问题

    AndroidStudio 3.0中之后无法打开DDMS [Android Device Monitor] 问题    转 https://blog.csdn.net/black_bird_cn/ar ...

  2. 一百零九:CMS系统之前端根据不同权限渲染不同菜单

    给用户绑定为开发者 个人信息中渲染角色和权限 {% extends 'cms/cms_base.html' %} {% block title %} 个人信息{% endblock %} {% blo ...

  3. Twisted & Treq

    1. Install treq:pip install treq 2. If twisted install failed, please reinstall itpip install twiste ...

  4. 关键字 using语句 大神的神扯

    using 是非托管资源: 解析:在C#应用托管到.NET Framework.但是他可以释放非托管资源. using 关键字有两个作用: 1:作为关键字,using可以导入命名空间 2:座位C#语句 ...

  5. docker 导出多个镜像合并成一个tar

    导出单个镜像 docker save [images] > [name.tar] 倒出多个镜像合并成一个tar包 docker save [images] [images] > [name ...

  6. python3使用tkinter之Menu坑

    添加菜单之后,下拉菜单的第一行是一条虚线,点击会在窗口的左上角独立显示下拉菜单,如下图所示: 去掉的方法是:创建文件菜单的时候,添加 tearoff=0参数 tearoff 有 0 和 1 两个值,分 ...

  7. 【计算机视觉】Vibe Vibe+

    ViBe是一种像素级的背景建模.前景检测算法,该算法主要不同之处是背景模型的更新策略,随机选择需要替换的像素的样本,随机选择邻域像素进行更新.在无法确定像素变化的模型时,随机的更新策略,在一定程度上可 ...

  8. 多线程基础知识---sleep和wait区别

    1.sleep()是Thread类的静态方法:wait()是Object的成员方法 2.sleep()可以在任何地方使用;wait()只能在同步方法或代码块中使用

  9. Java-Redis JdkSerializationRedisSerializer和StringRedisSerializer

    在将redis中存储的数据进行减一操作时出现: io.lettuce.core.RedisCommandExecutionException: ERR value is not a valid flo ...

  10. 腾讯云服务器的CPU ---发现大厂都很那啥

    今天给同事看了下 腾讯云上面的ora从了数据库的启动问题 简单看了下 硬件配置如下: System: Host: VM_0_8_centos Kernel: -.el6.x86_64 x86_64 b ...