ktv

                                        

  自制KTV点歌系统经验

Windows Media Player控件播放

                                                                      Windows Media Player控件的简单使用

  1.播放一首歌曲的方法

             Windows Media Player控件播放的要求:正确的路径

             如果Windows Media Player控件所在窗体是打开状态,那只要有正确的路径就可以播放了,

             列:

                    控件名.Url=正确的路径

                    

              Player1是自己起的Windows Media Player控件的Name;

              URL是系统的属性   两者连接用(.)点;

              Song.Song_Url是我自己的定义的储存路径的字段,相当于

               E:新建文件夹song假如.mp3    . 就是一个你电脑上的完整路径

              这样就可以播放一首歌曲了.

    2.播放多首歌曲的方法

             播放一首歌曲非常简单,只要了解了Windows控件就可以做到,

             那如何播放多首歌曲那?

             为什么上面的方法只能播放一首歌.Why?

            因为他给了控件一个固定的路径,(没错,还是路径! ),一个只能指向一首歌的固定路径.

            知道了原因,事情就好解决了.我们要做的就是把给控件的路径变成根据情况而可变的动态路径.

            如何实现路径的可变性? 

            我们可以中转一下,不直接把真实路径给控件,而是把要播放的所有歌曲的真实路径给一个存放地,数据集,表,数组等.

           这里以数组为列:

           然后通过判断歌曲的状态,如播放,停止等来执行数组的操作

           比如一首歌播完了,就在判定当前歌曲的状态为停止时,把下标进行+1操作然后把下标加一位置的路径给Windows Media Player控件的URL属性这样就可以实现,在播放完当前歌曲时,通过改变储存歌曲路径的数组的下标而改变传给控件的路径.路径改变了,自然就改变了播放的歌曲.

           这样就实现了程序自动播放多首歌曲.

           实列代码:

  a    核心操作类

                      1---------  储存歌曲

                 

                    

                  2-----------   用于改变播放歌曲

                     

                  

                 3----------   自定义一个返回Song类的方法,其作用是给调用自己的那个家伙一个歌曲数组里有的歌曲.

                      

                    

    b       播放器类

                 4------------         在播放器所在的类里,声明一个歌曲对象      (值为null)

                          

                5------------获得歌曲

                     

                    定义一个获得歌曲的方法,作用:得到在核心类定义的那个能给一个歌曲的方法所传的值(就是一个歌曲).并把他的路径给播放器

                   因为我设定的是能返回null,所以判断如返回的不是null

                   则把刚刚得到的歌曲的真实路径给播放器.

               6----------Load和Tick事件

                    

                上面的这个是两个方法

  1.      Load事件,窗体打开前发生

                  在其中打开设置好的Timer控件   (间隔一秒)

      2.     TT的Tick事件   (每秒执行一次)

               判断在本类声明的歌曲对象是否为空,如为空.调用本类的方法PlaySong()得到歌曲和设置其路径.(if块的内容是其他功能的作用,这里先不说明)

                  7-------播放下一首歌曲方法

               

                 下面带码判断当前状态是否为停止

                

                 如是把本类的歌曲对象song的值改为null

                 并调用核心操作类的NextSong()方法

                NextSong()方法:

              NextSong()方法的作用是:判断当前播放歌曲在歌曲数组里是否为空,如为空改变其状态为已播放(这里的播放歌曲是核心类的歌曲数组里的播放歌曲,不是播放窗体类的歌曲.)并把下标进行自增

              因为播放窗体类的Tick事件里的if判定中已经把

              播放窗体类的song清空(改为null)所以,1秒后(还记得TT控件么,1秒一次的重新判定)重新判定song为null,调用获得歌曲的方法

              不过这时,因下标已经改变为1了.得到的歌曲不在是下标为0的了.同样路径自然是下标为1的歌曲的.播放的就是歌曲数组里的第二首,也就是下标为一的歌曲.

这样当第一首歌播放结束时,就自动播放第二首了.

原文地址:https://www.cnblogs.com/xiangtianxiayu/p/4671568.html