当前位置: 代码迷 >> C# >> 北大青鸟KTV项目播发原理 指导老师:袁玉明
  详细解决方案

北大青鸟KTV项目播发原理 指导老师:袁玉明

热度:104   发布时间:2016-05-05 03:09:36.0
北大青鸟KTV项目播放原理 指导老师:袁玉明

第一步:

创建一个Song类

//歌曲名称

        public  string SongName { get; set; }

     //歌曲路劲

    public string SongPath { get; set; }

第二步:

         创建一个ListSong类

         //存储要播放的歌曲

         public static  List<Song> list = new List<Song>();

    public static int SongIndex = 0;//当前播放的歌曲在集合中的索引

       /// <summary>

    /// 把歌曲添加到List集合中

    /// </summary>

    public static void AddSong(Song song)

    {

           list.Add(song);

}

/// <summary>

       /// 获得播放的歌曲

       /// </summary>

       public static Song GetPalySong()

       {

           if (list.Count > 0)  àà判断集合中是否是元素

           {

               if (list.Contains(list[SongIndex]))   //看集合中是否包含list[SongIndex]这首歌             

 {

                   return list[SongIndex];

               }

           }

           return null;

       }

/// <summary>

       /// 获取下一首播放歌曲的名字

       /// </summary>

       /// <returns></returns>

       public static string GetNextSongName()

       {

           string name=string.Empty;    //定义一个name字段,接受要播放下一首歌曲的名称

           if (list.Count>1)     //集合中的元素必须大于1才能获取下一首歌曲的名称

           {

                name = list[SongIndex + 1].SongName;

            

           }

           return name;

       }

       /// <summary>

       /// 播放下一首

       /// </summary>

       public static void MoveOn()

       {

//判断当前的歌曲不等于空并且播放歌曲的状态不是重播的情况下就执行SongIndex++,从而实现播放下一首歌曲

           if (list[SongIndex] != null && list[SongIndex].Sate == Sateze.again)

           {

               list[SongIndex].ChagenSate();

           }

           else

           {

               SongIndex++;

           }

       }

第三步:

         在点击DataGirlView控件中的一首歌曲时,

           //创建一个Song类对象

       Song song = new Song();

       //获取歌曲名称

       song.SongName = this.dataGridView1.SelectedRows[0].Cells[3].Value.ToString();

       //获取歌曲路劲

       song.SongPath = this.dataGridView1.SelectedRows[0].Cells[2].Value.ToString();

       /调用ListSong中的AddSong方法给集合中添加数据

       ListSong.AddSong(song);

第四步:

         在主窗体FrmMain中定义一个Song类对象,接受要播放的歌曲

private Song song;//当前播放的歌曲

         //定义一个方法播放要播放的歌曲

    /// <summary>

    /// 播放歌曲

    /// </summary>

    public void LoadPalyedSong()

{

    this.song = ListSong.GetPalySong();//调用ListSong类中的GetPalySong方法,

        if (song!=null)

         {

                this.song.ChagenSate();     //改变歌曲的状态

                axWindowsMediaPlayer1.URL = @"E:\KTV\song\" + this.song.SongPath;  //:播放器播放的路劲

                this.textBox1.Text = this.song.SongName;   //当前播放的歌曲名称

                this.textBox2.Text = ListSong.GetNextSongName();   //调用ListSong类中的GetNextSongName方法获取下一首歌曲的名字

          }

}

在主窗体FrmMain中有一个Timer空间,它有一个Tick事件,在它的事件中有这样几句代码

 

            if (song==null)     //强行将song置为空,为了播放歌曲

            {

                LoadPalyedSong();

            }

           //播放下一首歌曲                      判断播放器空间的状态为停止时

            if (axWindowsMediaPlayer1.playState==WMPLib.WMPPlayState.wmppsStopped)

            {

                song = null;     //将song置为空,song指向下一首歌曲

                ListSong.MoveOn();     //调用ListSong类中的MoveOn方法播放下一首歌曲

        }

第五步:

         将从DataGirlView空间中选择的歌曲添加到ListView控件中

                this.listView1.Items.Clear();   //首先清空一下ListView控件

            foreach (Song item in ListSong.list)  //遍历整个集合

            {

                ListViewItem lvitem = new ListViewItem(item.SongName);

                lvitem.SubItems.Add(item.SongPath);

                string sate = item.Sate == Sateze.unPaly ? "未播放" : "已播放";

                lvitem.SubItems.Add(sate);

                this.listView1.Items.Add(lvitem);   //绑定到ListView控件中

            }