KTV点歌系统播放原理
北大青鸟KTV点歌系统播放原理
指导老师--原玉明
1.首先知道有两个类(PlayList Song)
PlayList类中有一方法
public static bool AddSong(Song song)
{
bool success = false;//记录添加歌曲是否成功
for (int i = 0; i < SongList.Length; i++)
{
//找到数组中第一个为null的位置
if (SongList[i] == null)
{
SongList[i] = song;
success = true;
break;
}
}
return success;
}
2.将选中的歌曲对象放到PlayList类中的数组
Song song = new Song();
song.SongName = dgvSong.SelectedRows[0].Cells["songName"].Value.ToString();记录当前歌曲
song.SongURL =KtvUnit.SongPath+"\\"+ dgvSong.SelectedRows[0].Cells["songURL"].Value.ToString();
//MessageBox.Show(song.SongURL);
PlayList.AddSong(song);
3.在FrmMian中的Timer控件 1s Enable=true Tick点击事件
If(Player1.playstate==Vmpplayer.stopped)
{
Song=null;
PlayList.MoveOn();//当歌曲播放到最后一秒的那一瞬间,进行播放下一首
}
4. public static void MoveOn()
{
if (SongList[SongIndex] != null && SongList[SongIndex].PlayState == SongPlayState.again)
//如果当前播放歌曲不为空并且状态为重播
{
SongList[SongIndex].SetSongPlayed();//状态改为已播
}
else
{
SongIndex++;//执行++进行下一首播放
}
}
5. public void SongList() `
{
lvSong.Items.Clear();
for (int i = 0; i < PlayList.SongList.Length; i++)
{
if (PlayList.SongList[i]!=null)
{
ListViewItem item = new ListViewItem();
item.Text = PlayList.SongList[i].SongName;
item.Tag = i;
string playstate = PlayList.SongList[i].PlayState == SongPlayState.unplayed ? "未播放" : "已播";
item.SubItems.Add(playstate);
lvSong.Items.Add(item);
}
}
}
KTV点歌系统播放原理的更多相关文章
- KTV点歌系统
经过十多天的艰苦奋战,MyKTV点歌系统终于成型,从刚开始接到项目的茫然,到完成项目时的喜悦,整个过程的艰辛和付出只有自己知道.虽然这个项目还有许多需要完善的地方,譬如添加歌词信息,实现窗体的美化等, ...
- java——集合、泛型、ArrayList、LinkedList、foreach循环、模拟ktv点歌系统
集合:一系列特殊的类,这些类可以存储任意类型的对象,长度可变,集合类都在java.util包中. 但是集合记不住对象的类型,当把对象从集合中取出时这个对象的编译类型就变成了Object类型.这样在取元 ...
- KTV歌曲播放原理
歌曲播放原理 一开始要有一个Song类,在类外面定义枚举,在里面放四种状态, 为:已播放,未播放,重唱,切歌 在类里把歌曲名称和路径封装成字段 起初每首歌的状态默认为未播放 通过MadeSongPla ...
- 欢迎进入MyKTV前后台点歌系统展示
一个项目,一分收获:一个项目,一些资源.Ktv项目也是一样的,所以我想分享我的收获,让你们获得你需要的资源. 一. 那MyKTV点歌系统具体的功能有哪些呢?我们就来看看吧! 1.MyKTV前台功能: ...
- 欢迎进入MyKTV点歌系统展示
一个项目,一分收获:一个项目,一些资源.Ktv项目也是一样的,所以我想分享我的收获,让你们获得你需要的资源. 一. 那MyKTV点歌系统具体的功能有哪些呢?我们就来看看吧! 1.MyKTV前台功能: ...
- Atitit 在线支付系统功能设计原理与解决方案 与目录
Atitit 在线支付系统功能设计原理与解决方案 与目录 1.1. 支付系统1 1.2. 独立的支付子体系..微服务架构..1 1.3. 参考书籍1 支付战争 [The PayPal Wars:Bat ...
- NET/ASP.NET Routing路由(深入解析路由系统架构原理)(转载)
NET/ASP.NET Routing路由(深入解析路由系统架构原理) 阅读目录: 1.开篇介绍 2.ASP.NET Routing 路由对象模型的位置 3.ASP.NET Routing 路由对象模 ...
- 【云图】如何制作全国KTV查询系统?
原文:[云图]如何制作全国KTV查询系统? 摘要:本文以[唱吧]531麦霸音乐节为案例,详细解读了如何导入自有数据到高德云图,并进行检索和展示.最后,调起高德mobile地图来进行路线规划和周边查询. ...
- android视频播放器系列(一)——系统播放器
使用系统播放器(intent隐士调用)可以播放本地视频和网络视频,但是使用方式上稍微有点差别: 一.播放本地视频 Uri uri = Uri.parse("本地视频地址");Int ...
随机推荐
- Poj 1511 Invitation Cards(spfa)
Invitation Cards Time Limit: 8000MS Memory Limit: 262144K Total Submissions: 24460 Accepted: 8091 De ...
- 九度OJ 1076 N的阶乘 -- 大数运算
题目地址:http://ac.jobdu.com/problem.php?pid=1076 题目描述: 输入一个正整数N,输出N的阶乘. 输入: 正整数N(0<=N<=1000) 输出: ...
- Scala - error: not found: value SortedMap
先 IMPORT!!!! scala> import scala.collection._import scala.collection._ scala> SortedMap(" ...
- mybatis()
---------------------------------mysql分页---------------------------------- public void selectList(in ...
- 读取xml文件(可执行文件根目录debug)
xml文件格式如下 <?xml version="1.0" encoding="utf-8" ?> <root> <appKey& ...
- 怎么样调试正在运行的exe?
最近在调虚幻的编辑器的时候遇到了一个问题. 调试模式运行UE4Editor.exe 实际上只是一个带参的命令行. 打开后,它又通过这个参数生成了一份详细配置,重新调用了自己.如图 这就悲剧了,断点都没 ...
- [转载] PowerMokito 使用
一.为什么要使用Mock工具 在做单元测试的时候,我们会发现我们要测试的方法会引用很多外部依赖的对象,比如:(发送邮件,网络通讯,远程服务, 文件系统等等). 而我们没法控制这些外部依赖的对象,为了解 ...
- php图片上传代码
使用copy函数 if (!empty($_FILES)) { //图片 if(isset($_FILES['image'])) { $img_data = $_FILES['image']['tmp ...
- NodeJS加MongoDB应用入门
OS:Windows 7 1.下载安装MongoDB:http://www.mongodb.org/downloads 2.下载安装NodeJS:http://nodejs.org/ 3.运行Mong ...
- 将 Wing IDE 与 Maya 结合使用(摘自Maya用户指南)
1. 将 wingdbstub.py 从 Wing IDE 安装目录复制到 Maya Python 脚本路径. 2. 确保已在“Wing IDE > 编辑 > 首选项 > 调试器”中 ...