zoukankan      html  css  js  c++  java
  • 微软官方Silverlight 音频播放器 Jonas修整版(silerlight 2.0版)

    代码不好,大家拍砖轻点啊~~

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    using System.Collections.ObjectModel;
    using System.Windows.Interop;
    using System.Windows.Threading;
    using System.ComponentModel;
    using System.Collections;
    namespace PlayerSite
    {
        public partial class Player : UserControl
        {
            bool trackingMouseMove = false;
            Point mousePosition = new Point();
            private TimeSpan timeDuration;
            private DispatcherTimer timer = new DispatcherTimer();
            public List<string> MusicList
            {
                get;
                set;
            }
            private int index=0;
            public int CurrentIndex
            {
                set
                {
                    if (value < 0)
                    {
                        index = 0;
                    }
                    else if (value > MusicList.Count - 1)
                    {
                        index = MusicList.Count - 1;
                    }
                    else
                    {
                        index = value;
                    }
                }
                get
                {
                    return index;
                }
            }
            public Player()
            {
                InitializeComponent();
                this.Loaded += new RoutedEventHandler(Player_Loaded);
                MediaPlayer.MediaOpened += new RoutedEventHandler(MediaPlayer_MediaOpened);
                MediaPlayer.MediaEnded += new RoutedEventHandler(MediaPlayer_MediaEnded);
            }
            void MediaPlayer_MediaEnded(object sender, RoutedEventArgs e)
            {
                ++CurrentIndex;
                MediaPlayer.Source = new Uri(MusicList[CurrentIndex]);
                MediaPlayer.Play();
            }
            void MediaPlayer_MediaOpened(object sender, RoutedEventArgs e)
            {
                timeDuration = MediaPlayer.NaturalDuration.HasTimeSpan ? MediaPlayer.NaturalDuration.TimeSpan : TimeSpan.FromMilliseconds(1);
            }
            void Player_Loaded(object sender, RoutedEventArgs e)
            {
                timer.Interval = TimeSpan.FromMilliseconds(500);
                timer.Tick += new EventHandler(timer_Tick);
                timer.Start();
                if (MusicList.Count > 0 && MediaPlayer.AutoPlay)
                {
                        PlaySymbol_Hide.Begin();
                        PauseSymbol_Show.Begin();
                        MediaPlayer.Source = new Uri(MusicList[0]);
                }
                else
                {
                    MediaPlayer.Stop();
                    PauseSymbol_Hide.Begin();
                    PlaySymbol_Show.Begin();
                }
            }

            void timer_Tick(object sender, EventArgs e)
            {
                if (MediaPlayer.CurrentState == MediaElementState.Playing)
                {
                    CurrentTimeText.Text = string.Format("{0:00}:{1:00}", MediaPlayer.Position.Minutes, MediaPlayer.Position.Seconds);
                    double value = (MediaPlayer.Position.TotalSeconds / timeDuration.TotalSeconds) * TimeSliderDecoration.Width;
                    FrameworkElement element = TimeThumb as FrameworkElement;
                    if (element != null)
                    {
                        element.SetValue(Canvas.LeftProperty, value);
                    }
                }
            }

            private void PlayerControlsMouseEnter(object sender, MouseEventArgs e)
            {
                PlayerControls_MouseEnter.Begin();
            }

            private void PlayerControlsMouseLeave(object sender, MouseEventArgs e)
            {
                PlayerControls_MouseLeave.Begin();
            }

            private void PlayPauseButtonMouseEnter(object sender, MouseEventArgs e)
            {
                PlayPauseButton_MouseEnter.Begin();
            }

            private void PlayPauseButtonMouseLeave(object sender, MouseEventArgs e)
            {
                PlayPauseButton_MouseLeave.Begin();
            }

            private void PreviousButtonMouseEnter(object sender, MouseEventArgs e)
            {
                PreviousButton_MouseEnter.Begin();
            }

            private void PreviousButtonMouseLeave(object sender, MouseEventArgs e)
            {
                PreviousButton_MouseLeave.Begin();
            }

            private void PreviousButton_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
            {
                --CurrentIndex;
                MediaPlayer.Source = new Uri(MusicList[CurrentIndex]);
                if (MediaPlayer.CurrentState == MediaElementState.Paused)
                {
                    MediaPlayer.Pause();
                }
                else if (MediaPlayer.CurrentState == MediaElementState.Stopped)
                {
                    MediaPlayer.Stop();
                }
            }

            private void NextButtonMouseEnter(object sender, MouseEventArgs e)
            {
                NextButton_MouseEnter.Begin();
            }

            private void NextButtonMouseLeave(object sender, MouseEventArgs e)
            {
                NextButton_MouseLeave.Begin();
            }

            private void NextButton_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
            {
                ++CurrentIndex;
                MediaPlayer.Source = new Uri(MusicList[CurrentIndex]);
                if (MediaPlayer.CurrentState==MediaElementState.Paused)
                {
                    MediaPlayer.Pause();
                }
                else if (MediaPlayer.CurrentState == MediaElementState.Stopped)
                {
                    MediaPlayer.Stop();
                }
            }

            private void StopButton_MouseEnter(object sender, MouseEventArgs e)
            {
                StopButtonMouseEnter.Begin();
            }

            private void StopButton_MouseLeave(object sender, MouseEventArgs e)
            {
                StopButtonMouseLeave.Begin();
            }

            private void StopButton_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
            {
                MediaPlayer.Stop();
                FrameworkElement element = TimeThumb as FrameworkElement;
                if (element != null)
                {
                    element.SetValue(Canvas.LeftProperty,(double)0);
                }
                PauseSymbol_Hide.Begin();
                PlaySymbol_Show.Begin();
            }

            private void PlayPauseSymbolMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
            {
                if (MediaPlayer.CurrentState == MediaElementState.Paused || MediaPlayer.CurrentState==MediaElementState.Stopped)
                {
                    PlaySymbol_Hide.Begin();
                    PauseSymbol_Show.Begin();
                    MediaPlayer.Play();
                }
                else
                {
                    PauseSymbol_Hide.Begin();
                    PlaySymbol_Show.Begin();
                    MediaPlayer.Pause();
                }
            }

            private void MuteButton_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
            {
                if (waves_icon.Opacity == 0)
                {
                    MuteOffSymbol_Show.Begin();
                    MediaPlayer.IsMuted = false;
                }
                else
                {
                    MuteOffSymbol_Hide.Begin();
                    MediaPlayer.IsMuted = true;
                }
            }

            private void VolumeThumb_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
            {

                FrameworkElement element = sender as FrameworkElement;
                mousePosition = e.GetPosition(null);
                if (null != element)
                {
                    trackingMouseMove = true;
                    element.CaptureMouse();
                    element.Cursor = Cursors.Hand;
                }
            }

            private void VolumeThumb_MouseMove(object sender, MouseEventArgs e)
            {
                FrameworkElement element = sender as FrameworkElement;
                if (trackingMouseMove)
                {
                    double deltaH = e.GetPosition(null).X - mousePosition.X;
                    double newLeft = deltaH + (double)element.GetValue(Canvas.LeftProperty);
                    if (newLeft < 0)
                    {
                        newLeft = 0;
                    }
                    else if (newLeft > VolumeSliderDecoration.Width)
                    {
                        newLeft = VolumeSliderDecoration.Width;
                    }
                    MediaPlayer.Volume = (newLeft / 70);
                    element.SetValue(Canvas.LeftProperty, newLeft);
                    //CurrentTimeText.Text = ((int)newLeft).ToString()+":"+MediaPlayer.Volume.ToString();
                    mousePosition = e.GetPosition(null);
                }

            }

            private void VolumeThumb_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
            {
                FrameworkElement element = sender as FrameworkElement;
                trackingMouseMove = false;
                element.ReleaseMouseCapture();
                mousePosition.X = mousePosition.Y = 0;
                element.Cursor = null;
            }

            private void TimeSliderDecoration_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
            {

            }
            private void TimeThumb_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
            {
                timer.Stop();
                FrameworkElement element = sender as FrameworkElement;
                mousePosition = e.GetPosition(null);
                if (null != element)
                {
                    trackingMouseMove = true;
                    element.CaptureMouse();
                    element.Cursor = Cursors.Hand;
                }
            }

            private void TimeThumb_MouseMove(object sender, MouseEventArgs e)
            {
               
                FrameworkElement element = sender as FrameworkElement;
                if (trackingMouseMove)
                {
                    double deltaH = e.GetPosition(null).X - mousePosition.X;
                    double newLeft =deltaH + (double)element.GetValue(Canvas.LeftProperty);
                    if (newLeft < 0)
                    {
                        newLeft = 0;
                    }
                    else if (newLeft > TimeSliderDecoration.Width)
                    {
                        newLeft = TimeSliderDecoration.Width;
                    }
                    element.SetValue(Canvas.LeftProperty, newLeft);
                    mousePosition = e.GetPosition(null);
                }
               
            }

            private void TimeThumb_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
            {
                FrameworkElement element = sender as FrameworkElement;
                FrameworkElement thumb = TimeThumb as FrameworkElement;
                element.ReleaseMouseCapture();
                mousePosition.X = mousePosition.Y = 0;
                element.Cursor = null;

                double value=0;
                if (thumb != null)
                {
                    value = (double)thumb.GetValue(Canvas.LeftProperty);
                }
               
                trackingMouseMove = false;
                if (MediaPlayer.CanSeek)
                {
                    MediaPlayer.Pause();
                    MediaPlayer.Position = TimeSpan.FromSeconds(timeDuration.TotalSeconds *value / TimeSliderDecoration.Width);
                    MediaPlayer.Play();
                }
                timer.Start();
            }

        }
    }

    在这里下载源代码 源代码

  • 相关阅读:
    Sqlite基础(一)
    个人作业冲刺(四)
    安卓用户名密码操作及虚拟机问题
    安卓之界面跳转
    个人作业冲刺(三)
    个人作业冲刺(二)
    个人作业冲刺(一)
    Android studio RatingBar(星级评分条)
    阅读笔记——《构建之法》4
    Android studio GridLayout(网格布局)
  • 原文地址:https://www.cnblogs.com/Jonas/p/1439733.html
Copyright © 2011-2022 走看看