Visual C#读取歌曲列表文件,并获取单个音乐文件信息,功能还有返回一个歌曲对象、获取歌曲名称、获取歌手名、自动播放下一首、切歌,ture上一首,false下一首、更新路径、单曲循环、随机播放等。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace MyMusicBox
{
/// <summary>
/// 歌曲列表
/// </summary>
[Serializable]
class PlayList
{
public static List<Song> song = new List<Song>();//存储所有歌曲
public static List<Song> play = new List<Song>();//存储播放列表
public static int id = 1;//当前播放歌曲编号,非索引,id-1=索引
/// <summary>
/// 播放歌曲
/// </summary>
/// <returns>返回一个歌曲对象</returns>
public static Song Play()
{
//如果播放集中存在对象
if (play.Count>0)
return play[id - 1];
else
return null;
}
/// <summary>
/// 获取歌曲名
/// </summary>
/// <returns></returns>
public static string GetName()
{
//如果播放集合为空
if (play.Count ==0)
return "当前无播放歌曲";
else
return play[id - 1].Name;
}
/// <summary>
/// 获取歌手名
/// </summary>
/// <returns></returns>
public static string GetSinger()
{
//如果播放集合为空
if (play.Count == 0)
return " ";
else
return "一" + play[id - 1].Singer;
}
/// <summary>
/// 自动下一首
/// </summary>
public static void PlayNext()
{
//如果当前播放为最后一首,编号重置为1
if (id == play.Count)
id = 1;
else
id++;
}
/// <summary>
/// 切歌,ture上一首,false下一首
/// </summary>
public static void Cut(bool temp)
{
if (play.Count == 0)
return;
//修改状态为cut,使主窗体song对象清空
play[id - 1].SongState = SongPlayState.cut;
//上一首,如果已经是第一首就切换最后一首
if (temp)
{
if (id ==1)
id=play.Count;
else
id--;
}
//下一首,如果已经是最后一首就切换第一首
else
{
if (id == play.Count)
id = 1;
else
id++;
}
}
/// <summary>
/// 更新路径
/// </summary>
public static void Update()
{
foreach (Song s in play)
{
foreach (Song s1 in song)
{
if (s.Name == s1.Name)
{
s.FileName = s1.FileName;
}
}
}
}
/// <summary>
/// 单曲循环
/// </summary>
public static void PlayOne()
{
int temp = id - 1;
id = temp;
}
/// <summary>
/// 随机
/// </summary>
public static void PlayRandom()
{
Random r = new Random();
id = r.Next(1, play.Count);
}
}
}
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。