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 ...
随机推荐
- bzoj1402:[HAOI2008]硬币购物
思路:完全背包加容斥原理 首先不考虑限制,那么很容易可以预处理出f[i](f[i]+=f[i-c[i]],1<=i<=4,i-c[i]>=0). 然后考虑如何求出限制后的答案. 首先 ...
- Object-API-NSLog
NSLog中的基础数据类型 输出格式: NSLog("") char: %c short int: %hi %hx %ho unsigned short int: %hu %hx ...
- Ubuntu下gcc及g++环境配置
直接在命令行中输入以下命令即可. sudo apt-get install build-essential 安装完成后输入 gcc 和 g++ 进行确认.
- ci 多个文件同时上传
// 单个文件请手册,这里多个文件中,参数设置可参考手册 view 视图 <form...> <input type="file" name="user ...
- PDO操作mysql数据库(二)
从 MySQL 数据库读取数据 <?php $server = "localhost"; $user = "root"; $pwd = "123 ...
- WPF界面特殊字符处理
界面XAML不支持< .>.&."等字符. 使用字符实体编码进行替代,以下是pro WPF 4.5的摘要表 Special Character ...
- SQLite批量插入,修改数据库 zt
SQLiteConnection sqConnection = dataProvider.GetDbConnection(); sqConnection.Open(); SQLiteCommand s ...
- C++ 11 笔记 (二) : for循环
首先肯定的是,我不是标题党.. C++11的for循环确实有跟C++98不一样的地方,还是先上代码: , , , , }; for (int x : test_arr) { std::cout < ...
- word中的表格空白部分整不掉,下面的表格拉不上来
是因为下页的表格太大,占据了一页,要把下面的表格拉小一点
- Maven安装与更新
Maven是Apache组织中的一个颇为成功的开源项目,主要服务于基于Java平 台的项目构建.依赖管理和项目信息管理: 1) Maven是跨平台的,在Windows.Linux和Mac上都可以使用: ...