zoukankan      html  css  js  c++  java
  • 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.重复上边的步骤就可以了

     

  • 相关阅读:
    [luoguP2463] [SDOI2008]Sandy的卡片(后缀数组 + st表)
    [luoguP3302] [SDOI2013]森林(主席树 + 启发式合并 + lca)
    [luoguP2526] [SHOI2001]小狗散步(二分图最大匹配)
    [luoguP3231] [HNOI2013]消毒(最小点覆盖 + 状压)
    [luoguP1963] [NOI2009]变换序列(二分图最大匹配)
    [luoguP1129] [ZJOI2007]矩阵游戏(二分图最大匹配)
    [luoguP1640] [SCOI2010]连续攻击游戏(二分图最大匹配)
    [luoguP2569] [SCOI2010]股票交易(DP + 单调队列)
    SICP:2,4 序对的过程性表示方法
    SICP:1.43重复调用函数
  • 原文地址:https://www.cnblogs.com/xiangtianxiayu/p/4697181.html
Copyright © 2011-2022 走看看