自制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的更多相关文章

  1. python全栈开发 * 线程锁 Thread 模块 其他 * 180730

    一,线程Thread模块1.效率更高(相对于进程) import time from multiprocessing import Process from threading import Thre ...

  2. Badboy - variable setter

    参考: http://leafwf.blog.51cto.com/872759/1117646 http://www.51testing.com/html/00/130600-1367743.html ...

随机推荐

  1. 【转】蓝牙物理链路类型:SCO和ACL链路

    原文网址:http://blog.chinaunix.net/uid-23193900-id-3272233.html  蓝牙物理链路ACL(Asynchronous Connectionless), ...

  2. 【转】Unity 相关经典博客资源总结(持续更新)

    原文:http://blog.csdn.net/prothi/article/details/20123319 就作为一个记录吧,把平时看过的Unity相关的一些好的Blog记录并分享. 好的论坛: ...

  3. 低压差稳压器AMS1585

    (1)高效线性稳压. (2)输出高达4.6A,最高输入电压15V,推荐最低压差1.5V(最低1.35V),最大压差12V. (3)两种封装:TO220(直插式),TO230(贴片). 典型电路如下图所 ...

  4. Front-End Engineer 技术栈

    自己根据各种招聘网站上的技术要求做的,希望自己能成为这样的人.

  5. 【Objective-C基础教程-读书笔记】第1章 启程

    在第1章里面,作者主要以一种站在世界中心呼唤爱的姿态,给读者们打打鸡血洗洗脑,鼓励大家,投入时间学习Objective-C,值得啊! 首先,Objective-C既能用来开发OS X平台上的APP,又 ...

  6. Axure初体验:简单交互、通过按钮切换图片

    前言: 之前是一直用processon的UI原型设计,后来感觉只能完成静态页面的processon满足不了原型设计的需求,断网时候也不方便修改.展示.最终还是决定学习动态页面的制作,所选工具为原型设计 ...

  7. 《Principles of Mathematical Analysis》-chaper1-实数系与复数系

    今天我们开始简单的介绍数学分析这门课程,参考教材是Walter Rudin著的<Principles of Mathematical Analysis> 对于一门新课你最开始可能会问的是: ...

  8. 长沙Uber优步司机奖励政策(1月18日~1月24日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  9. 使用JUnit测试java代码

    Junit 单元测试实验报告  一.实验环境 MyEclipse2014.Junit4.10 二.实验目的 学会单元测试,在MyEclipse中进行Junit测试 三.实验步骤 1.写出要测试的类 代 ...

  10. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(2)-easyui构建前端页面框架[附源码]

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(2)-easyui构建前端页面框架[附源码] 开始,我们有了一系列的解决方案,我们将动手搭建新系统吧. 用 ...