• 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的歌曲的.播放的就是歌曲数组里的第二首,也就是下标为一的歌曲.

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

  • 相关阅读:
    asp.net 奇淫技巧
    生成缩略图不清晰
    NPOI相关
    Dapper
    Newtonsoft.Json高级用法(转载)
    swfobject2.2
    如何把SQLServer数据库从高版本降级到低版本? (转载)
    Smallpdf 轻松玩转PDF。我们爱它。
    Simple Data
    在HTML中优雅的生成PDF
  • 原文地址:https://www.cnblogs.com/xiangtianxiayu/p/4671568.html
Copyright © 2020-2023  润新知