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 ...
随机推荐
- soundtouch源码分析__based on csdn :
1. soundtouch介绍和相关资源 The SoundTouch Library Copyright © Olli Parviainen 2001-2014 SoundTouch is an o ...
- 【转】怎么在Foxmail回复/转发时使用签名?
原文网址:http://kf.qq.com/faq/120322fu63YV130422yABZRZ.html Foxmail回复/转发时使用签名,可通过在模版中设置签名.如下版本操作方法: 一.fo ...
- Delphi 6 Web Services初步评估之三(转)
Delphi 6 Web Services初步评估之三(转) Delphi 6 Web Services初步评估之三(转)★ 测试总体印象:在整个测试中,对Delphi 6创建的Web Servi ...
- python 正则表达式(一)
正则表达式(regular exprssion)是一种形式化语法描述的文本匹配模式.模式被解释为一组指令,然后会执行这组指令.以一个字符串作为输入,生成一个匹配的子集或源字符串的修改版本. 表达式可以 ...
- 【转】Log4cpp 封装
[转自]http://blog.csdn.net/ylioi/article/details/9049591 这篇文章对Log4cpp使用了宏定义和类进行封装,非常有借鉴意义. log4cpp 是参考 ...
- ubuntu下使用ngrok外网映射
好久之前想搞明白这个事情,可是就是不知道这个词叫外网映射,所以也一直不知怎么做,在慕课网看用java开发微信公众号的时候教程里提到了外网映射,查了一些资料终于把本地给映射到外网了,直接变成了80端口, ...
- 待解决)leetcode 路径和 dfs 线序遍历
Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given su ...
- 关于View和VIewController的关系和理解
之前看过关老师的视频之后就有写关于视图切换的程序,不过那是很久之前了,那时候也不知道什么是View,什么是VIewController,就知道照着写.这次项目的时候,我又碰到了这个问题,我自以为比较能 ...
- spring框架DI(IOC)和AOP 原理及方案
http://www.blogjava.net/killme2008/archive/2007/04/20/112160.html http://www.oschina.net/code/snippe ...
- SRM 387(1-250pt)
DIV1 300pt 题意:有m种颜色的球若干个放在n个盒子里.每次操作可从一个盒子里拿出任意个球(不必同色),放进另一个盒子.要求终态为:1.最多有一个盒子里面装有不同色的球,该盒子成为joker ...