北大青鸟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点歌系统播放原理的更多相关文章

  1. KTV点歌系统

    经过十多天的艰苦奋战,MyKTV点歌系统终于成型,从刚开始接到项目的茫然,到完成项目时的喜悦,整个过程的艰辛和付出只有自己知道.虽然这个项目还有许多需要完善的地方,譬如添加歌词信息,实现窗体的美化等, ...

  2. java——集合、泛型、ArrayList、LinkedList、foreach循环、模拟ktv点歌系统

    集合:一系列特殊的类,这些类可以存储任意类型的对象,长度可变,集合类都在java.util包中. 但是集合记不住对象的类型,当把对象从集合中取出时这个对象的编译类型就变成了Object类型.这样在取元 ...

  3. KTV歌曲播放原理

    歌曲播放原理 一开始要有一个Song类,在类外面定义枚举,在里面放四种状态, 为:已播放,未播放,重唱,切歌 在类里把歌曲名称和路径封装成字段 起初每首歌的状态默认为未播放 通过MadeSongPla ...

  4. 欢迎进入MyKTV前后台点歌系统展示

    一个项目,一分收获:一个项目,一些资源.Ktv项目也是一样的,所以我想分享我的收获,让你们获得你需要的资源. 一. 那MyKTV点歌系统具体的功能有哪些呢?我们就来看看吧! 1.MyKTV前台功能: ...

  5. 欢迎进入MyKTV点歌系统展示

    一个项目,一分收获:一个项目,一些资源.Ktv项目也是一样的,所以我想分享我的收获,让你们获得你需要的资源. 一. 那MyKTV点歌系统具体的功能有哪些呢?我们就来看看吧! 1.MyKTV前台功能: ...

  6. Atitit 在线支付系统功能设计原理与解决方案 与目录

    Atitit 在线支付系统功能设计原理与解决方案 与目录 1.1. 支付系统1 1.2. 独立的支付子体系..微服务架构..1 1.3. 参考书籍1 支付战争 [The PayPal Wars:Bat ...

  7. NET/ASP.NET Routing路由(深入解析路由系统架构原理)(转载)

    NET/ASP.NET Routing路由(深入解析路由系统架构原理) 阅读目录: 1.开篇介绍 2.ASP.NET Routing 路由对象模型的位置 3.ASP.NET Routing 路由对象模 ...

  8. 【云图】如何制作全国KTV查询系统?

    原文:[云图]如何制作全国KTV查询系统? 摘要:本文以[唱吧]531麦霸音乐节为案例,详细解读了如何导入自有数据到高德云图,并进行检索和展示.最后,调起高德mobile地图来进行路线规划和周边查询. ...

  9. android视频播放器系列(一)——系统播放器

    使用系统播放器(intent隐士调用)可以播放本地视频和网络视频,但是使用方式上稍微有点差别: 一.播放本地视频 Uri uri = Uri.parse("本地视频地址");Int ...

随机推荐

  1. 坑爹CF April Fools Day Contest题解

    H - A + B Strikes Back A + B is often used as an example of the easiest problem possible to show som ...

  2. centOS 6.4 vsftpd 安装配置

    参考  http://blog.csdn.net/wocjj/article/details/7418944   配置说明 http://www.cnblogs.com/redhatlinux/arc ...

  3. main(int argc , char *argv[])

    #include <unistd.h>#include <stdlib.h>#include <stdio.h> int main(int argc, char * ...

  4. apache .htaccess 伪静态重定向,防盗链 限制下载...

    301全站跳转 RewriteEngine OnRewriteCond %{HTTP_HOST} ^www\.old\.net$ [NC]RewriteRule ^(.*)$ http://www.n ...

  5. js 中如何通过提示框跳转页面

    通过提示框跳转页面 <!doctype html> <html lang="en"> <head> <meta charset=" ...

  6. C语言-06复杂数据类型-04 结构体

    结构体的说明(构造类型) 数组:只能由多个相同类型的数据构成 结构体:可以由多个不同类型的数据构成 ,结构体的类型是不存在的,自己定义 int main() { // 1.定义结构体类型 定义类型的时 ...

  7. Intel项目Java小记

    cannot be cast to javax.servlet.Filter添加provided即可 install -X是什么意思? Unsupported major.minor version ...

  8. RSA算法原理及实现

    参考资料: 阮哥的日志:http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html http://www.ruanyifeng ...

  9. 文档学习 - UILabel - 属性详解

    #import "ViewController.h" @implementation ViewController - (void)viewDidLoad { [super vie ...

  10. Xcode 证书生成、设置、应用

    Xcode 证书生成.设置.应用,与大家分享.如果按下面步骤还不能编译成功,我手把手教你. 开发环境: Mac OS lion 10.7.4 XCode 4.3.3 1         点击钥匙图标 ...