Jypeli  5
The simple game programming library
MediaPlayer.cs
Siirry tämän tiedoston dokumentaatioon.
1 using System;
2 using Microsoft.Xna.Framework.Content;
3 
4 using XnaSong = Microsoft.Xna.Framework.Media.Song;
5 using System.Reflection;
6 using Microsoft.Xna.Framework.Media;
7 
8 namespace Jypeli
9 {
13  public class MediaPlayer
14  {
15  private ContentManager content;
16 
20  public double Volume
21  {
22  get { return Microsoft.Xna.Framework.Media.MediaPlayer.Volume; }
23  set { Microsoft.Xna.Framework.Media.MediaPlayer.Volume = (float)value; }
24  }
25 
31  public bool CanPlay
32  {
33  get
34  {
35 #if WINDOWS_PHONE
36  Microsoft.Xna.Framework.FrameworkDispatcher.Update();
37  return Microsoft.Xna.Framework.Media.MediaPlayer.GameHasControl;
38 #else
39  return true;
40 #endif
41  }
42  }
43 
47  public bool IsMuted
48  {
49  get { return Microsoft.Xna.Framework.Media.MediaPlayer.IsMuted; }
50  set { Microsoft.Xna.Framework.Media.MediaPlayer.IsMuted = value; }
51  }
52 
56  public bool IsRepeating
57  {
58  get { return Microsoft.Xna.Framework.Media.MediaPlayer.IsRepeating; }
59  set { Microsoft.Xna.Framework.Media.MediaPlayer.IsRepeating = value; }
60  }
61 
65  public bool IsPlaying
66  {
67  get { return Microsoft.Xna.Framework.Media.MediaPlayer.State == MediaState.Playing; }
68  }
69 
70  internal MediaPlayer( ContentManager content )
71  {
72  this.content = content;
73  }
74 
79  public void Play( string songName )
80  {
81  if ( !CanPlay ) return;
82 
83  XnaSong song;
84  try
85  {
86  song = content.Load<XnaSong>( songName );
87  }
88  catch ( ContentLoadException e )
89  {
90  throw new Exception(
91  "Could not play the song \"" + songName + "\".\n" +
92  "Please check that you added the song to the Content project and typed the name correctly.", e );
93  }
94  Microsoft.Xna.Framework.Media.MediaPlayer.Play( song );
95  }
96 
97 #if WINDOWS
98  public void PlayFromFile( string fileName )
103  {
104  if ( !CanPlay ) return;
105 
106  // Use reflection to get the internal constructor of Song class
107  // The public constructor does not take spaces well!
108  var ctor = typeof( Song ).GetConstructor(
109  BindingFlags.NonPublic | BindingFlags.Instance, null,
110  new[] { typeof( string ), typeof( string ), typeof( int ) }, null );
111 
112  Song song = (Song)ctor.Invoke( new object[] { "name", fileName, 0 } );
113  Microsoft.Xna.Framework.Media.MediaPlayer.Play( song );
114  }
115 #endif
116 
121  public void PlayFromURL( string url )
122  {
123  if ( !CanPlay ) return;
124 
125  Song song = Song.FromUri( "song", new Uri( url ) );
126  Microsoft.Xna.Framework.Media.MediaPlayer.Play( song );
127  }
128 
132  public void Pause()
133  {
134  if ( !CanPlay ) return;
135  Microsoft.Xna.Framework.Media.MediaPlayer.Pause();
136  }
137 
141  public void Resume()
142  {
143  if ( !CanPlay ) return;
144  Microsoft.Xna.Framework.Media.MediaPlayer.Resume();
145  }
146 
150  public void Stop()
151  {
152  if ( !CanPlay ) return;
153  Microsoft.Xna.Framework.Media.MediaPlayer.Stop();
154  }
155  }
156 }
void PlayFromURL(string url)
Soittaa kappaleen nettiosoitteesta.
Definition: MediaPlayer.cs:121
Mediasoitin, jolla voi soittaa musiikkikappaleita.
Definition: MediaPlayer.cs:13
bool IsRepeating
Toistetaanko kappaleita alusta.
Definition: MediaPlayer.cs:57
void Resume()
Jatkaa pysäytettyä kappaletta.
Definition: MediaPlayer.cs:141
bool IsPlaying
Soitetaanko tällä hetkellä mitään.
Definition: MediaPlayer.cs:66
void Pause()
Pysäyttää soiton.
Definition: MediaPlayer.cs:132
void Stop()
Keskeyttää soiton.
Definition: MediaPlayer.cs:150
bool IsMuted
Onko mediasoitin hiljaisella vai ei.
Definition: MediaPlayer.cs:48
double Volume
Äänenvoimakkuus välillä 0.0 - 1.0.
Definition: MediaPlayer.cs:21
void Play(string songName)
Soittaa kappaleen.
Definition: MediaPlayer.cs:79
bool CanPlay
Voiko musiikkia soittaa. Windows Phonella rajoituksena on että käyttäjän musiikkia ei saa keskeyttää...
Definition: MediaPlayer.cs:32