KTV2
自制KTV点歌系统经验
重唱与切歌
1.重唱
这个简单,会了播放,就会了这个;
我们用的数组下标来确定播放歌曲,自然如果下标没变的话,那播放的就还是这首了。所以只要确定了要执行的命令是重唱就行了。
那么问题来了,如何确定执行的命令是什么。
Song类:
我们可以自定义一个Song歌曲类,用来封装歌曲的姓名,路径,状态。
姓名:歌曲名
路径:用于播放
状态:确定执行的命令
在定义一个枚举来确定状态的取值范围
已播,未播,重唱,切歌
前边的所有Song类的对象的模板都是这个类的实例
这样只要在播放窗口的Tick事件中加个if判断来确定当前播放歌曲的状态是否为重唱,如是:
让当前播放歌曲为空,这样因为播放不为停止所以不会进入下一首的if判定,而因为歌曲为空,
一秒后Tick事件再次触发时,歌曲为空,就再次得到核心类的正在播放歌曲,而因为没有进入下一首的if
判定所以播放歌曲下标不变,自然播放的还是当前播放的歌曲。
2.切歌
同理与重唱,只要用歌曲的状态知道了要执行的是切歌命令,在播放窗体做出相应的判断就行了。
那切歌需要执行的操作有那些哪?
其实只有一个,那就是覆盖。
既然我们用的是数组,那只要让数组的下标的位置发生变化既循环让数组的下标i+1项把值赋给数组下标i项不就可以(当然要注意下标越界和空值等问题)当然要改变播放歌曲的状态为切歌。
播放类里,如播放歌曲的状态为切歌 那把播放歌曲的值赋为null(空)
我们伟大的Tick事件在漫偶长的1秒后从新触发时歌曲为null
得到核心类的正在播放歌曲,因为切歌是已循环覆盖了数组的值,所以自然就没有了已被切掉的歌曲。
2.2如要切指定的歌曲那?
同理,只要得到要切歌的歌曲在数组里的下标,然后同上操作。
1.首先既然要选就得有已点歌曲列表。如用ListView控件表示
2.得到所选的歌曲的下标,用SelectedItems得到
3.重复上边的步骤就可以了
KTV2的更多相关文章
- python全栈开发 * 线程锁 Thread 模块 其他 * 180730
一,线程Thread模块1.效率更高(相对于进程) import time from multiprocessing import Process from threading import Thre ...
- Badboy - variable setter
参考: http://leafwf.blog.51cto.com/872759/1117646 http://www.51testing.com/html/00/130600-1367743.html ...
随机推荐
- 【HDOJ】1930 And Now, a Remainder from Our Sponsor
简单字符串. #include <stdio.h> #define MAXLEN 160 char buf[MAXLEN]; ], parts[]; void getpart(int x) ...
- TCP/IP FTP/TFTP
引言 从一台计算机向另一台计算机传送文件是在连网或互联网环境中最常见的任务.而FTP和TFTP就是这样的协议. 关于文件传输协议FTP? 端口21使用服务TCP [FTP模型] FTP连接? 1.控制 ...
- Sublime Text 2 中文包
下载中文包 大家直接下载吧 http://download.csdn.net/detail/onebelowzero2012/9331981 注意解压路径,一开始我以为D:\MySublime\Sub ...
- sql server 2008 创建新数据库报错、创建表报错、更改表的设计报错
一:创建数据库报错如下: 二:解决,将软件以管理员身份运行 三:创建表报错如下图: 四:解决办法,在你创建的数据库下面的安全里,找到你创建的用户,属性,添加权限,红色标注,然后确定: 五:更改表的设计 ...
- php 中 global 与 $GLOBAL 由引用产生的区别
很多人都认为global和$GLOBALS[]只是写法上面的差别,其实不然. 根据官方的解释是 $GLOBALS['var'] 是外部的全局变量$var本身. global $var 是外部$var的 ...
- Automake
Automake是用来根据Makefile.am生成Makefile.in的工具 标准Makefile目标 'make all' Build programs, libraries, document ...
- 《A First Course in Mathematical Modeling》-chaper2-建模过程、比例性及几何相似性
这一章节着重从整体的层面给出数学建模过程中一个泛式流程,它给出了在给现实模型建立数学模型的框架性思路,但是需要注意的是,虽然这里称其为一种“泛式”思路,但是在具体的问题的分析中,整个建模过程还是充满了 ...
- 与IO相关的等待事件troubleshooting-系列5
'db file scattered read' 这是另一种常见的等待事件.他产生于Oracle从磁盘读取多个块到Buffer Cache中非连续(" scattered&q ...
- sublime text2 快捷键
主要快捷键列表: Ctrl+L 选择整行(按住-继续选择下行)Ctrl+KK 从光标处删除至行尾Ctrl+Shift+K 删除整行Ctrl+Shift+D 复制光标所在整行,插入在该行之前Ctrl+J ...
- C# SQL多条件查询拼接技巧
本文转载:http://blog.csdn.net/limlimlim/article/details/8638080 #region 多条件搜索时,使用List集合来拼接条件(拼接Sql) Stri ...