以下是小编给大家收集的Silverlight实例教程 Out of Browser音乐播放器,本文共6篇,欢迎大家前来参阅。

篇1:Silverlight实例教程 Out of Browser音乐播放器

在上一篇,我们了解了如何在Silverlight的Out of Browser模式下进行Debug调试,另外学习Silverlight OOB应用的一个新特性Notifications窗口,本篇,我们将结合以往的Out of Browser特性, 创建一款新的Out of Browser实例, 音乐播放器。 该实例目的比较简单,实现音乐播放,实现音乐文件 列表读取,实现音乐文件信息读取,另外音乐播放自动跳转等功能。

在实例开始前,我们仍旧需要了解一些基础知识。Silverlight对音频的支持是使用MediaElement类, 该类使用方法非常简单,该类的详细解释,请看MSDN

1

2 x:Name=“media”

3 Source=“xbox.wmv”

4 CurrentStateChanged=“media_state_changed”

5 Width=“300” Height=“300”/>

在了解了音频播放类的简单使用后,让我们先看看项目完成后的效果图,

从上面效果图中可以看出整个实例项目UI分5个部分,

1. 音频控制部分,这部分是实例主要功能;

2. 音频文件信息部分,这部分是获取显示当前和下一首音乐文件信息;

3. 唱片图片信息,其实这部分也是属于音频文件信息,不过这里单独列出来,使用独立的类进行处理 ;

4. 音频文件列表,该列表是载入My Music目录中的音乐文件,并支持用户选择播放功能;

5. UI控制,该部分可以使播放器进入最小化状态。例如:

下面我们开始分别解释以上几个部分的实例设计方法。

我们仍旧使用SilverlightOOBDemo项目,不过为了使代码更清晰易读,这次不再使用 OutofBrowserMainPage作为OOB应用主界面,我们重新创建一个新的OOB应用界面 OutofBrowserMusicPlayer。

为了修改启动页面为OutofBrowserMusicPlayer,为此,我们需要修改App.xaml中的启动页面代 码:

1 private void Application_Startup(object sender, StartupEventArgs e)

2 {

3 if (!Application.Current.IsRunningOutOfBrowser)

4 {

5 this.RootVisual = new MainPage;

6 }

7 else

8 {

9 //this.RootVisual = new OutofBrowserMainPage ();

10this.RootVisual = new OutofBrowserMusicPlayer ();

11 }

12

13 }

根据实例需求,我们最主要的功能就是播放音乐,所以,我们第一步首先实现Out of Browser应用音 频控制。

1. 创建自定义音频控制控件;

对于音频控制,这里我们使用了自定义控件控制音乐的播放。AudioControl.xaml控件,

这里我仅贴上部分代码,大家可以在文章最后下载完整源代码。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

从以上代码可以看到,在AudioControl中有两个自定义控件local:MediaSlider和local:Spinner。

MediaSlider:

其功能是控制音乐播放进度,支持拖拽前进或者后退音乐播放进度。其代码如下:

1 public class MediaSlider : Slider

2 {

3 public Thumb horizontalThumb;

4 private FrameworkElement horizontalLeftTrack;

5 private FrameworkElement horizontalRightTrack;

6 private double ldValue = 0, newValue = 0, prevNewValue = 0;

7 public event RoutedPropertyChangedEventHandler MyValueChanged;

8 public event RoutedPropertyChangedEventHandler MyValueChangedInDrag;

9 private DispatcherTimer dragtimer = new DispatcherTimer ();

10 private double dragTimeElapsed = 0;

11 private const short DragWaitThreshold = 200, DragWaitInterval = 100;

12 public Rectangle progressRect = null;

13 private bool dragSeekJustFired = false;

14

15 public MediaSlider()

16 {

17

18 this.ValueChanged += new RoutedPropertyChangedEventHandler(CustomSlider_ValueChanged);

19 dragtimer.Interval = new TimeSpan(0, 0, 0, 0, DragWaitInterval);

20 dragtimer.Tick += new EventHandler(dragtimer_Tick);

21 }

22

23 void dragtimer_Tick(object sender, EventArgs e)

24 {

25 dragTimeElapsed += DragWaitInterval;

26

27 if (dragTimeElapsed >= DragWaitThreshold)

28 {

29 RoutedPropertyChangedEventHandler handler = MyValueChangedInDrag;

30

31 if ((handler != null) && (newValue != prevNewValue))

32 {

33 handler(this, new RoutedPropertyChangedEventArgs(oldValue, newValue));

34 dragSeekJustFired = true;

35 prevNewValue = newValue;

36 }

37

38 dragTimeElapsed = 0;

39 }

40 }

41

42 void CustomSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgse)

43 {

44 ldValue = e.OldValue;

45 newValue = e.NewValue;

46

47 if (horizontalThumb.IsDragging)

48 {

49 dragTimeElapsed = 0;

50 dragtimer.Stop();

51 dragtimer.Start();

52 dragSeekJustFired = false;

53 }

54 }

55

56 public override void OnApplyTemplate()

57 {

58 base.OnApplyTemplate();

59

60 horizontalThumb = GetTemplateChild(“HorizontalThumb”) as Thumb;

61 horizontalLeftTrack = GetTemplateChild(“LeftTrack”) as FrameworkElement;

62 horizontalRightTrack = GetTemplateChild(“RightTrack”) as FrameworkElement;

63 progressRect = GetTemplateChild(“Progress”) as Rectangle;

64

65 if (horizontalLeftTrack != null) horizontalLeftTrack.MouseLeftButtonDown += new MouseButtonEventHandler (OnMoveThumbToMouse);

66

67 if (horizontalRightTrack != null) horizontalRightTrack.MouseLeftButtonDown += new MouseButtonEventHandler (OnMoveThumbToMouse);

68

69 horizontalThumb.DragCompleted += new DragCompletedEventHandler(DragCompleted);

70

71 progressRect.Width = this.Width;

72 }

73

74 public Storyboard ProgressStoryboard { get { return (GetTemplateChild(“ProgressStoryboard”) as Storyboard); } }

75

76 public Rectangle ProgressBar { get { return (GetTemplateChild(“Progress”) as Rectangle); } }

77

78 protected override Size ArrangeOverride(Size finalSize)

79 {

80 Size s = base.ArrangeOverride(finalSize);

81

82 if (double.IsNaN(horizontalThumb.Width) && (horizontalThumb.ActualWidth != 0))

83 {

84 horizontalThumb.Width = horizontalThumb.ActualWidth;

85 }

86

87 if (double.IsNaN(horizontalThumb.Height) && (horizontalThumb.ActualHeight != 0))

88 {

89 horizontalThumb.Height = horizontalThumb.ActualHeight;

90 }

91

92 if (double.IsNaN(horizontalThumb.Width)) horizontalThumb.Width = horizontalThumb.Height;

93 if (double.IsNaN(horizontalThumb.Height)) horizontalThumb.Height = horizontalThumb.Width;

94

95 return (s);

96 }

97

98 private void OnMoveThumbToMouse(object sender, MouseButtonEventArgs e)

99 {

100 e.Handled = true;

101 Point p = e.GetPosition(this);

102

103 if (this.Orientation == Orientation.Horizontal)

104 {

105 Value = (p.X - (horizontalThumb.ActualWidth / 2)) / (ActualWidth - horizontalThumb.ActualWidth) * Maximum;

106 }

107

108 RoutedPropertyChangedEventHandlerhandler = MyValueChanged;

109

110 if (handler != null)

111 {

112 handler(this, new RoutedPropertyChangedEventArgs(oldValue, Value));

113 }

114 }

115

116 private void DragCompleted(object sender, DragCompletedEventArgs e)

117 {

118 dragtimer.Stop();

119 dragTimeElapsed = 0;

120

121 RoutedPropertyChangedEventHandlerhandler = MyValueChanged;

122

123 if ((handler != null) && (!dragSeekJustFired))

124 {

125 handler(this, new RoutedPropertyChangedEventArgs(oldValue, this.Value));

126 }

127 }

128 }

而Spinner控件,是一个载入标识,当音频载入时,会显示该控件,

该控件为Path绘制的控件,这里不 再贴出代码描述。

2. 获取音频文件信息部分

该部分我们同样也创建一个自定义控件来实现,TrackInfo.xaml,主要是负责在客户端显示音频文件 的信息,而Silverlight没有相关API可以实现读取音频文件的标签信息,这里,我们需要引入一个微软开 源类库TagLib。该类库的主要功能就是读取和修改音乐文件的标签信息。

其调用方法非常简单:

1 // 获取标签

2 tags = TagLib.File.Create(MediaFile.ID);

3 // 设置标签属性

4 MediaFile.Artist = tags.Tag.FirstPerformer;

5 MediaFile.Title = tags.Tag.Title;

6 MediaFile.Album = tags.Tag.Album;

7 MediaFile.Genre = tags.Tag.FirstGenre;

当音乐标签信息获取成功后,即可将信息绑定到TrackInfo.DataContext。

3. 唱片图片信息

对于唱片的图片信息,这里需要读取Image从本地目录,当没有唱片图片时,则显示默认Music.png图 片。这里需要注意的是,读取本地文件,需要OOB应用权限信任。

1 public ImageSource AlbumArtStream

2 {

3 get

4 {

5 BitmapImage image;

6

7 if (string.IsNullOrEmpty(AlbumArtPath))

8 {

9 if (null == _default)

10 {

11 _default = new BitmapImage(new Uri(“../Images/Music.png”, UriKind.Relative));

12 }

13

14 image = _default;

15 }

16 else

17 {

18 FileStream stream = File.Open(AlbumArtPath, FileMode.Open, FileAccess.Read);

19

20 image = new BitmapImage();

21 image.SetSource(stream);

22 stream.Close();

23 }

24

25 return image;

26 }

27 }

4. 获取音频文件列表

从演示图片可以看出,我们的音频文件列表,是用了一个绑定了音乐播放文件信息的Datagrid。

其代码非常简单,创建两列,分别绑定歌手和歌曲名:

1

2Grid.Row=“1”

3Grid.Column=“1”

4Grid.RowSpan=“3”

5VerticalAlignment=“Top”

6Margin=“4”

7Height=“296”

8Style=“{StaticResource DataGridStyle}”

9AutoGenerateColumns=“False”

10CanUserResizeColumns=“True”

11CanUserSortColumns=“False”

12 SelectionChanged=“playList_SelectionChanged”>

13

14

15 Binding=“{Binding Artist}”

16 FontSize=“12” />

17

18 Binding=“{Binding Title}”

19 FontSize=“12”

20 Width=“*” />

21

22

而后台,在读取了My Music目录后,将数据集绑定到datagrid.ItemsSource就可以正常实现歌曲列表 了。

1 public static ListGetMediaFiles()

2 {

3 Listfiles = null; ;

4 MediaFile mf;

5 string path = Environment.GetFolderPath (Environment.SpecialFolder.MyMusic);

6 IEnumerablelist = Directory.EnumerateFiles(path, “*.mp3”, SearchOption.AllDirectories);

7 TagLib.File tags;

8 files = GetCachedList(list);

9 if (null == files || files.Count == 0)

10 {

11 files = new List();

12 foreach (string file in list)

13 {

14 mf = new MediaFile();

15 mf.ID = file;

16 mf.AlbumArtPath = GetAlbumArtPath(file);

17 files.Add(mf);

18 }

19

20 for (int idx = 0; idx < files.Count; idx++)

21 {

22 mf = files[idx];

23 tags = TagLib.File.Create(mf.ID);

24 mf.Artist = tags.Tag.FirstPerformer;

25 mf.Title = tags.Tag.Title;

26 mf.Album = tags.Tag.Album;

27 mf.Genre = tags.Tag.FirstGenre;

28 }

29 SaveCachedList(files);

30 }

31

32 return files;

33 }

在绑定成功后,同时,我们支持用户选择指定音乐播放,使用Datagrid的SelectionChanged事件即可 。

1 private void playList_SelectionChanged(object sender, SelectionChangedEventArgs e)

2 {

3 DataGrid dg = (sender as DataGrid);

4

5 if (dg.SelectedIndex != _nowPlaying)

6 {

7 if (dg.SelectedIndex != 0)

8 {

9 me.AutoPlay = true;

10 }

11 OpenAndPlay(dg.SelectedIndex);

12 }

13

14 }

5. UI控制

对于UI的控制,这里我们只是简单的实现了隐藏和显示音乐信息框的功能,其代码实现:

1 private void Minimize_Click(object sender, MouseButtonEventArgs e)

2 {

3 Window main = Application.Current.MainWindow;

4

5 if (!_min)

6 {

7 main.Height = 40;

8 rot.Angle = 0;

9 }

10 else

11 {

12 main.Height = 340;

13 rot.Angle = 180;

14 }

15

16 _min = !_min;

17 }

上面是OOB音乐播放器5个部分的核心功能代码,这里,我想同时将上一篇讲到的Notifications窗口应 用到实例中,我们可以仍旧使用NotificationControl文件,在其中对播放音乐Title进行绑定,即当音乐 播放完毕后,即弹出消息提示播放下一首“XXX”音乐。效果如下图:

根据上一篇介绍Notifications窗口的代码,我们简单进行修改,即可实现本篇实例需求:

1 NotificationWindow notifyWindow = null;

2 private void ShowToast()

3 {

4 notifyWindow = new NotificationWindow();

5

6 if (notifyWindow.Visibility == Visibility.Visible)

7 notifyWindow.Close();

8

9 NotificationControl myNotify = new NotificationControl ();

10 myNotify.DataContext = _playList[_nowPlaying];

11 notifyWindow.Width = 300;

12 notifyWindow.Height = 100;

13 notifyWindow.Content = myNotify;

14 notifyWindow.Show(10000);

15 }

至此,一款基于Silverlight的Out of Browser模式的音乐播放器基本完成了。大家可以根据该实例添 加更多自定义功能,例如添加互联网音乐播放功能,音乐搜索功能等,创建属于自己的Silverlight版酷 我音乐盒。

随文源码:www.bianceng/dotnet/12/671.htm

篇2:音乐播放器作文

我有一台音乐播放器,我非常喜欢它,给它取名为小白,

音乐播放器作文

。这是我的一位好朋友送给我的。

小白穿着一身漂亮的“白衬衫”还配着一条黑色的漂亮“短裙子”,再配上

小白不但外形漂亮,而且我和它在生活中还是一对儿形影不离的好朋友呢!每当我孤独、寂寞的时候,小白总是陪伴我;每当我高兴时,我不仅和家人分享快乐,我还和小白一起分享快乐。小白也需要我,有的时候,小白没电了,它都会响起“嘟嘟”的警告声,似乎在说“小主人,我的肚子饿了,快给我吃饭。”有的时候,小白的“裙子”脏了,我都会去拿点儿纸巾,擦去“裙子”的脏痕,它变得非常漂亮,我真是越来越喜欢它了,

小学生作文大全

小白还有许多的功能呢!里面有一个音乐播放器,我偶尔会下载一些歌曲,仿佛给小白增添了几件新衣裳。考试之前,我总要听上一两首优美的歌曲,放松一下紧张的心情。小白里面还有电影播放,我无聊时,我都看一些有趣的电影,这样就可以解闷了。里面还有录音,我每天都会录音,长大后,我就可以细细的回味小时候的趣事了。小白里面还有一个电子书,有许多书籍我都可以在电子书里找呢!小白真是无所不能呀!

我爱你,小白!

(同时在小荷作文网发表)

篇3:Dreamweaver音乐播放器

在Dreamweaver为网页添加背景音乐播放器,是丰富页面活动的重要内容。本篇教程将就Dreamweaver网页背景音乐播放器的添加进行详细讲解。

1、首先在在站点中新建HTML项目(如图1所示)。

图1

2、选择Dreamweaver的“设计”窗口,插入—布局对象—Div标签。在随后跳出的“插入div标签”对话框中直接点击“确定”按钮(如图3所示)。

图2

图3

3、删除div标签中的文字内容,再次进行:插入—媒体—插件操作。

图4

4、你可以将音乐文件放如你已经创建好的站点中,选择你要插入的音乐文件,点击“确定”(如图5所示)。弹出提示窗口后同样选择“确定”(如图6所示)。

图5

图6

篇4:Silverlight实例教程 Out of Browser存取本地文件系统

在前文,我们讲述了Silverlight Out of Browser的基础以及自定义模式应用 ,本篇,我们将讲述Silverlight Out of Browser应用的重点 - 创建可信任应用 ,也称为Trusted Application. 早在Silverlight 3,Silverlight Out of Browser的功能由于权限的限制无法很好的满足用户的正常存取需求,仅能实现将 Web应用脱离浏览器。而在Silverlight 4中,通过提升应用信任权限,大大增强 了Silverlight Out of Browser的功能,在权限允许的情况下,用户可以自由有 访问本地目录,也可以执行本地应用程序,另外通过调用COM组件,实现更多更强 大的本地应用操作。下面我们将实例讲述Silverlight Out of Browser可信任应 用 - 存取本地文件系统。

本篇中,我们将基于上篇教程提供的项目SilverlightOOBDemo进行演示操作。

首先需要确认SilverlightOOBDemo项目允许用户提升应用信任权限。这样, OOB应用将被允许访问用户本地资源。

Silverlight 4对于本地文件夹的存取,并非代表存取所有本地磁盘目录,目 前为止,Silverlight 4 API仅支持存取“我的文档”,“我的音乐”,“我的图片 ”和“我的视频”目录以及“Program Files”和“Cookies”目录,而如果想对 所有磁盘目录进行访问,则需要使用COM功能进行操作,我们将在下篇讲述,本篇 将着重讲述 Silverlight 4 API对“我的”系列目录的操作方法。

在实现具体功能前,首先需要为项目添加两个新文件,一个是资源文件 Resources.xaml,该资源文件引用自开源控件BlackLight资源样式,主要目的是 为了创建新按钮演示效果,如下图:

另一个是小图片控件ThumbImage.xaml,该文件是用于载入“我的图片”目录后 的图片略缩图,其代码较为简单,

1

2xmlns=“schemas.microsoft/winfx//xaml/presentation”

3xmlns:x=“schemas.microsoft/winfx/2006/xaml”

4 xmlns:d=“schemas.microsoft/expression/blend/”

5xmlns:mc=“schemas.openxmlformats/markup- compatibility/2006”

6 mc:Ignorable=“d”

7d:DesignHeight=“300” d:DesignWidth=“400”>

8

9

10

11

12

1 namespace SilverlightOOBDemo

2 {

3 public partial class ThumbImage : UserControl

4 {

5 private Image _OriginalImage;

6 public Image OriginalImage

7 {

8 get

9 {

10return _OriginalImage;

11 }

12 set

13 {

14 this._OriginalImage = value;

15ThumbnailImage.Source = new WriteableBitmap(_OriginalImage, null);

16 }

17 }

18

19 public ThumbImage

20 {

21 InitializeComponent();

22 }

23 }

24 }

为了能够激活存取事件,我们需要在OutofBrowserMainpage主窗口页面添加按 钮控件,其样式调用自资源文件Resources.xaml,对于资源样式调用,这里不再 赘述,如果不明白的,请看“Expression Blend实例中文教程系列文章”

1

2

3

4

5

13

14

15

16

17

18

19

20

21

29

30

31

32

同时,为了能够载入本地“我的图片”目录中的图片文件,我们需要在 OutofBrowserMainpage中使用一个ListBox控件,载入上面我们创建的ThumbImage 控件来显示,所有图片略缩图列表,

1

现在,我们可以为openfilebtn按钮控件创建事件,使其响应用户操作,打开 对应目录进行文件浏览

1 private void openFileBtn_Click(object sender, RoutedEventArgs e)

2 {

3 if (Application.Current.HasElevatedPermissions)

4 {

5 var imageFiles = Directory.EnumerateFiles(Environment.GetFolderPath (Environment.SpecialFolder.MyPictures), “*.jpg”, SearchOption.AllDirectories);

6foreach (var imagePath in imageFiles)

7{

8 AddImageToList(new FileInfo(imagePath));

9}

10 }

11 }

在上面代码中,如果用户已经提升了OOB应用权限 (Application.Current.HasElevatedPermissions),将通过Environment中的 GetFolderPath方法获取到本地“My..”目录下的文件,其中 Environment.SpecialFolder可以设定特殊目录,

更多详细,请看MSDN解释。

在上面代码中,有一个方法AddImageToList,将文件路径信息读取,然后将图 片文件信息进行绑定到ListBox。

1 private void AddImageToList(FileInfo fileinfo)

2 {

3 FileStream fileStream = fileinfo.OpenRead();

4 Image img = new Image();

5 BitmapImage bi = new BitmapImage();

6 bi.SetSource(fileStream);

7 img.Margin = new Thickness(5d);

8 img.Stretch = Stretch.UniformToFill;

9 img.Source = bi;

10 try { img.Tag = fileinfo.FullName; }

11 catch { }

12 ThumbImage thumbnail = new ThumbImage ();

13 thumbnail.OriginalImage = img;

14 lsMyPictures.Items.Add (thumbnail);

15 }

在读取“我的图片”目录信息后,将各个图片载入到ThumbImage控件中,然后 使用ListBox承载各个图片,这样也就完成了OOB应用对本地目录的浏览。其效果 如下:

通过以上的代码,我们可以快速修改,浏览“我的文档”,“我的音乐”和“ 我的视频”等目录;在OutofBrowserMainPage页面添加代码:

1

1 private void AddDocToList()

2 {

3 var path = Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments);

4 lsMyDocuments.ItemsSource = System.IO.Directory.EnumerateFiles (path);

5 }

然后在openFileBtn_Click事件中调用AddDocToList();即可获取到“我的文档 ”文件列表, 其他目录与其类似,就不再做代码演示,大家可以自己尝试,如果 遇到问题,我们可以一起讨论 。

看到这里,有的朋友可能会问,既然已经可以实现浏览本地目录功能,是不是 也应该可以对本地目录文件进行操作呢?答案是肯定的。当OOB应用获取到权限提 升后,则可以使用File类对文件进行操作,例如,移动文件,删除文件等。对目 前的项目我们进行简单的修改,演示如何将“我的文档”目录的文件 ,移动到“我的音乐”目录中,并且删除源目录的相同文件,

首先在OutofBrowserMainPage.xaml页面添加一个新的ListBox,承载“ 我的音乐”目录文件;

1

2

3

4

在后台代码添加,浏览载入“我的音乐”目录;

1 private void AddMusicToList()

2 {

3 var path = Environment.GetFolderPath(Environment.SpecialFolder.MyMusic);

4 lsMyMusics.Items.Clear();

5 DirectoryInfo myDirectory = new DirectoryInfo(path);

6 foreach (FileInfo file in myDirectory.EnumerateFiles())

7 {

8lsMyMusics.Items.Add(file);

9 }

10 }

简单修改“我的文档”ListBox代码,和后台代码:

1

2

3

4

1 private void AddDocToList()

2 {

3 var path = Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments);

4 lsMyDocuments.Items.Clear();

5 DirectoryInfo myDirectory = new DirectoryInfo(path);

6 foreach (FileInfo file in myDirectory.EnumerateFiles())

7 {

8lsMyDocuments.Items.Add(file);

9 }

10 //lsMyDocuments.ItemsSource = System.IO.Directory.EnumerateFiles (path);

11 }

运行后即可得到如下效果:

下面我们想实现,点击按钮事件后,将“我的文档”目录中的选中文件,移动 到“我的音乐”目录中,

首先,在应用的ToolBar中添加一个移动按钮moveFileBtn

实现moveFileBtn被点击后,移动文件到“我的音乐”目录,

1 private void moveFileBtn_Click(object sender, RoutedEventArgs e)

2 {

3 FileInfo selectedFile = (FileInfo) lsMyDocuments.SelectedValue;

4 string path = Environment.GetFolderPath(Environment.SpecialFolder.MyMusic);

5 string formatPath = string.Format(“{0} \\{1}”, path, selectedFile.Name);

6 if (!File.Exists(formatPath))

7 {

8File.Move(selectedFile.FullName, formatPath);

9 File.Delete (selectedFile.FullName);

10 }

11 LoadFiles();

12 }

13

14 private void LoadFiles()

15 {

16 AddDocToList();

17 AddMusicToList();

18 }

这里我们用的是最基本的File文件类操作文件的移动和删除,当然,这需要 OOB应用被提升信任权限后,才可以操作,否则,将提示权限错误。

这样,我们就可以查看演示了,当运行应用后,“我的文档”和“我的音乐” 两个目录将被载入文件列表,选中“我的文档”中任一文件,然后点击“移动” 按钮,就会发现该文件被移动到“我的音乐”目录中,而在“我的文档”中的源 文件已经被删除。

通过上文,我们可以了解到Silverlight Out of Browser的可信任应用对本地 目录和文件的操作方法以及基本API的用法,下一篇,我们将通过另外一个实例演 示更多Out of Browser的可信任应用的强大功能。

注:本篇部分代码是参考Silverlight开源项目。

本文配套源码

篇5:PS鼠绘音乐播放器

教程需要素材:

步骤 1

创建一个 600×400 px的图层.

步骤 2

使用放射式渐变填充背景,颜色设置为#5e6c78 ——#20282e

步骤 3

复制背景图层,之后进行滤镜-杂色-添加杂色,设置如下:数量:5%;选择单色。下降图片透明度到30%。

步骤 4

制作主界面,创建一个新图层,(按Ctrl + Shift + N)并命名为“Base”,再使用圆角矩形工具,设置半径5px,画出画面中一样的矩形,并使用这些混合选项。设置参数按照图片所示。

颜色渐变参数为:#3d4a59;#1c2329;#303a44 ,描边颜色为#191919。

步骤 5

600 × 600px。 充填50%灰色。 然后,添加杂色,参数设置:80%;高斯噪声,单色。 然后再选择滤镜模糊-径向模糊:旋转参数为100。 之后可以根据自己的感觉,使用快捷键CTRL + F重复径向模糊,直到你满意。

步骤 6

复制到之前创建的“base”图层上。更改混合模式为柔光,不透明度为80%。图层命名为 “Texture”.按Ctrl 点击“base”图层,调用选区,然后按Ctrl + Shift +I, 选择Texture图层点击删除不要的选区。

步骤 7

创建新图层。将它命名为”Higlights”,再用铅笔工具画两条线,分别放置在base图层的视频界面顶端和底部。再选择一个大一点,参数设置为80%不透明度的橡皮擦擦除两侧的线条。

步骤 8

再创建新图层。将它命名为”speaker”。Ctrl键的点击 “base”图层的缩略图获得选区。然后选择矩形工具,按住SHIFT键+ ALT键拖动得到选区,#3a3a3a填充它。复制图层,命名为“质地”。之后进入混合选项并添加这些设置:选择“蛛网图案(素材下载见文章顶部)”,图案叠加混合模式:叠加模式和参数设置为12%。

步骤 9

创建一个新层,命名为“突出”,再次使用铅笔工具绘制1px高光边缘,然后创建一个新图层,命名为“影子”。使用椭圆工具,取出不需要的区域,羽化,高斯模糊,降低透明度50%既可以,大家可以适当的根据感觉调整。

步骤 10

按照左侧制作方法,创建右侧部分。

步骤 11

之后创建,最小化和最大化及关闭按钮。创建新层,命名为“按钮”。再使用圆角矩形工具,设置半径为2px,画一个小按钮,它填充白色。图层渐变的颜色为:#8799ab-#485664-#8799ab 描边颜色为#384251。

步骤 12

创建一个新层,命名为“X”。为了让X更好看,你可以使用你喜欢的字体或用铅笔绘制工具,之后再添加一个渐变(暗灰色,浅灰色)和1px阴影得到这个效果。

步骤 13

同样的方法创建另外两个按钮。

步骤 14

创建新层,画一个像图片中的矩形,填充渐变颜色为#303a44—— #4a5968

步骤 15

创建一个新层,

将它命名为“光泽”。再绘制一个小矩形,填充白色透明度降低到10%。

步骤 16

按照之前的方法绘制高光,透明度大家根据自己的感觉设置即可以。

步骤 17

文字添加,大家可以根据自己的想法修改,我使用的字体是Digital-7,大家可以在DaFont下载到,而细节的处理,还是使用前面常用的方法,用铅笔工具画1px线条来添加细节高光。

步骤 18

创建一个新层。将它命名为“进度条”。再使用圆角矩形工具,半径设置为5px,绘制一个细长的矩形,黑色填充并添加图层样式:渐变叠加颜色设置为#303a44-#1c2329;添加描边1px,颜色为#afbbc6,不透明度为16%。再创建一个新图层,命名为“进度条旋钮”。画出一个小矩形,并填充黑色。图层样式选项为:内阴影:混合模式正常,颜色-白色,距离0,大小1,渐变叠加:#5c6977 -#212a30 -#5c6977; 外描边:1px,颜色#222b31。

步骤 19

接下来要制作好多按钮。创建一个新组,命名为“Buttons”。首先制作播放器基本按钮,如暂停键等。建一个新图层,命名“Button base”。用半径为5px的圆角矩形工具画出外框,然后描边(弧线可重复使用圆角工具完成)。选择图层样式-投影:角度90(使用全局光),距离1,大小0;再勾选内阴影:混合模式为正常,颜色白色,角度90(不使用全局光),距离1,大小0;选择渐变叠加:#4d5c6a-#1c2329-#303a43.

步骤 20

用1px铅笔画四条直线,擦去直线的末端,注意透明度变化。看截图自己想象该怎么细致就怎么整。

步骤 21

制作播放、暂停、停止、前进和后退按钮。用矩形和三角形工具简单的画出,在这个图层添加渐变叠加效果,颜色分别为#b7d9ed-#458fb2-#b7d9ed。

步骤 22

现在做最后四个按钮:重复、随机、播放单和均衡器。制作每一个按钮的步骤都差不多,用圆角工具画出大致形状,添加图层样式:投影-透明度26%,扩展100%,大小1;内阴影-模式选正常,颜色白色,透明度40%,角度90,距离1,阻塞100%,大小0;渐变叠加-#3d4a59-#1c2329-#303a44。复制按钮并如图放置。

步骤 23

现在添加文字。选择Arial字体,再进行图层样式处理:投影-透明度42%,角度90,距离1,大小0.渐变叠加- #4c5a69-#8495a7。

步骤 24

再用铅笔工具进行一些细节处理,主要是高光处理。

步骤 25

最后就是音量控制了。用1px铅笔画出喇叭图标,接着进行渐变处理,颜色设置为#b7d9ed-#458fb2-#b7d9ed。

步骤 26

用半径5px的圆角矩形工具画音量条,用渐变工具填充颜色,设置与进度条一致。

步骤 27

画10个小圆圈。激活的小圆用与喇叭一样的渐变填充,其他的填充简单的黑灰渐变。

步骤 28

现在音频播放器的制作基本完成。合并所有图层(除了背景层),复制这个合并层进行2px高斯模糊,选择垂直翻转,再用橡皮擦轻轻擦去底部(注意画笔,不透明度和流量的使用)。

这样一步一步地,漂亮的音频播放器在你的手中诞生了。

这种界面制作,关键是掌握和控制高光和细节的过渡,大家可以多尝试一下,很快就能掌握要领了。

篇6:QQ音乐播放器功能常见问题

1、QQ音乐播放器中的全部播放是什么功能?

答:全部播放是指将单曲推荐里的歌曲全都加到播放列表并且自动进行播放,

2、QQ音乐播放器里,什么是分组收藏列表?

答:在使用QQ音乐时,您可将喜欢的歌曲添加到分组收藏列表,还可以建立分组来保存歌曲。

3、QQ音乐播放器里,什么是随便听听列表?

答:随便听听列表中汇集了系统推荐的歌曲,默认推荐内容为收听量排名前3000的歌曲,您也可以通过分类按钮选择您想听的歌曲类别,系统将根据您选择的类别自动过滤出推荐列表。

4、为什么有的QQ音乐歌曲不能收藏?

答:目前只支持乐库正版的QQ音乐进行收藏,您添加的本地歌曲和添加的网络URL音乐都无法收藏。

5、QQ音乐的播放列表中,最多支持上传多少首歌曲?

答:普通用户和绿钻用户上传都没有数量上的限制,但有歌曲总容量有相应的限制,

6、QQ音乐“随便听听”里的歌曲多久进行一次更新?

答:每天都会根据QQ音乐里歌曲收听量的排行更新一次。

7、QQ音乐上传的歌词审核标准是什么?

答:审核歌词时,主要看歌词的内容是否正确,是否与该歌曲相符。另请注意不要有过多的错别字。

8、为什么我上传了的歌词没有显示在QQ音乐播放器?

答:所有通过QQ音乐播放器上传的歌词都需要专业人员审核,请耐心等待。也谢谢您对QQ音乐的支持!

9、QQ音乐里自定义播放列表最多创建多少个?

答:QQ音乐自定义播放列表最多可以创建50个。

10、QQ音乐收藏是否有收藏上限?

答:为了让用户更好的体验我司的业务,QQ音乐收藏暂无收藏限制。

更多推荐

Silverlight实例教程 Out of Browser音乐播放器