.NET小项目之MyKtv(歌曲播放功能实现)
在KTV点歌系统中我们根据需求获取到歌手的歌曲信息,点击歌手的歌曲将其添加到一点歌曲列表中看似简单的一个操作其实涉及很多内容,这也是写这篇Blog的目的—分析歌曲播放的原理。
原理分析
我们应该清楚,在KTV中点歌后会将歌曲添加到已点列表中,已点列表,这时候播放器会根据已点列表里的歌曲顺序去播放歌曲。具体如何实现该功能,我们一步步来分析。
- 首先我们应该创建一个播放列表类,用来存储已点列表,以及已点列表操作相对应的方法。
创建Song类来保存歌曲对象,
枚举类SongPlayState歌曲的播放状态,
创建PlayList类用来保存播放列表以及播放列表操作相对应得方法
(这里我们将PlayList类中的SongIndex歌曲下标以及SongList歌曲列表设为静态,播放列表的操作有添加歌曲AddSong(),获取播放歌曲GetPlaySong(),和获取到下一首歌MoveNext())
这里我们使用了对象数组,其实使用泛型集合更好.在这也不做过多纠结了
我们获取到要点的歌,先创建了这首歌曲的对象,然后将它添加到播放列表中,同时在已点歌曲中显示
(添加歌曲到已点列表,并注明该歌曲的播放状态)
(添加歌曲到播放类表)
2.我们在已点歌曲列表中,点击歌曲,歌曲播放,做的就是获取到歌曲的文件路径并将其传给Player
我们需要在住界面窗体中设置属性Song为当前播放的歌曲,歌曲列表的播放,我们需要使用Timer空间,每隔一秒对播放器的状态进行(使用Timer的Tick事件)
之后再调用PlayList的GetSong()方法,
同时增加判断是否存在下一首,以及获取上一曲歌曲名和下一曲歌曲名
今天这篇Blog有点赶时间了,可能会存在很多问题,我认为基本上已经囊括了歌曲播放功能的关键。
今天只给KTV添加了歌曲播放功能,之后的几天里会对KTV做进一步的完善!
.NET小项目之MyKtv(歌曲播放功能实现)的更多相关文章
- Andriod小项目——在线音乐播放器
转载自: http://blog.csdn.net/sunkes/article/details/51189189 Andriod小项目——在线音乐播放器 Android在线音乐播放器 从大一开始就已 ...
- 用struts2标签如何从数据库获取数据并在查询页面显示。最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变量。
最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变 ...
- IOS-小项目(饿了么 网络部分 简单实现)
在介绍小项目之前,在此说明一下此代码并非本人所写,我只是随笔的整理者. 在介绍之前先展现一下效果图. 看过效果图大家应该很熟悉了,就是饿了么的一个界面而已,值得注意的是,实现时并没有采用本地连接,而是 ...
- 模拟XShell的小项目
不知道大家有没有用过XShell这款工具,这款工具通过windows可以远程操作处于开机状态的linux操作系统,也就是说把你的电脑和一台服务器连入网络,你通过输入服务器所在的IP地址建立一个会话就可 ...
- 小项目特供 贪吃蛇游戏(基于C语言)
C语言写贪吃蛇本来是打算去年暑假写的,结果因为ACM集训给耽搁了,因此借寒假的两天功夫写了这个贪吃蛇小项目,顺带把C语言重温了一次. 是发表博客的前一天开始写的,一共写了三个版本,第一天写了第一版,第 ...
- 【PHP小项目使用MVC架构】
小项目名称是雇员管理系统. mvc是一种项目的开发模式,中文名称为模式视图控制器,是强制程序员将数据的输入.处理.输出分开的一种开发模式. 在这个小项目中,控制器使用service作为后缀名. 项目u ...
- MOGRE学习笔记(3)--MOGRE小项目练习
学习OGRE有一段时间了,领导为了检测学习效果,根据已有C++项目,弄一个类似的用c#语言编写的小项目. 配置:win7,DirectX2009,vs2010. 项目要求: 1.有Ogre窗口(尺寸1 ...
- Web前端开发:SQL Jsp小项目(一)
Jsp的学习算是告一段落,针对这段时间的学习,写了一个Jsp小项目来巩固学到的知识. 框架示意图 User list process UserAdd process 需要的界面效果: 需要工具:Ecl ...
- Ado.Net小练习02(小项目CUID
前台界面: 后台代码: namespace ado.net小项目cuid { public partial class Form1 : Form { //连接字符串 ...
随机推荐
- 创建性能监视器(logman)
在本地计算机上抓取性能信息 Logman.exe create counter Perf-1Second -f bincirc -max 500 -c "\Processor(*)\% Pr ...
- 从零学习IOS-VirtualBox-4.3.20-96997-Win
在virtual box中点击[新建] 发现只有32位的mac可以选择,百度之后才知道需要开启虚拟化,于是重启电脑进入到BOOT,选择高级,然后将虚拟化开启.再重新启动virtual box
- 大作业 XXX大学 课程管理系统
#include<stdio.h> #include<iostream> #include<string.h> #include <fstream> # ...
- iOS开发——Swift篇&单例的实现
Swift实现单例模式 Swift实现单例模式 由于Swift语言弱化了struct和class之间的界限,这里我分别给出自己写的两种的单例实现 class版本: class SwiftSinglet ...
- air 中的 LocalStore
<ignore_js_op> 在AIR客户端程序中有时需要将用户的一些信息保存在本地,如果信息没有涉及到隐私那么一般用SharedObject类即可将数据存储在本地.由于SharedObj ...
- Gradle的安装与配置
Gradle的下载地址:http://gradle.org/gradle-download/ Tips:要先安装JDK并配置其环境变量. 下载完成后将里面的文件解压出来,如下图所示: 添加一个名称为G ...
- Spring3之MVC
模式-视图-控制器(MVC)是UI设计中常见的设计模式, 该模式区分应用程序中的模式.视图和控制器三个角色,消除了业务逻辑与UI的耦合.模式负责封装视图展示的应用数据.视图应该只显示数据,不包含任何业 ...
- 基于MVVM的知乎日报应用安卓源码
使用data binding , dagger2 , retrofit2和rxjava实现的,基于MVVM的知乎日报APP运行效果: <ignore_js_op> 使用说明: 项目结构 a ...
- Android更改imagebutton为纯色方法
我的imagebutton所用的背景png图片是灰色的,但是我想让他显示出来是白色的按钮,如果用ps去一个个填充不太现实,那有没有什么办法去通过xml里的属性改变背景颜色呢? 一开始我用了网上的方法 ...
- Redis主备复制
Redis 支持 Master-Slave(主从)模式,Redis Server 可以设置为另一个 Redis Server 的主机(从机),从机定期从主机拿数据.特殊的,一个从机同样可以设置为一个 ...