Jypeli  9
The simple game programming library
MediaPlayer.cs
Siirry tämän tiedoston dokumentaatioon.
1 using System;
3 using XnaSong = Microsoft.Xna.Framework.Media.Song;
4 
5 using Microsoft.Xna.Framework.Media;
6 
7 
8 namespace Jypeli
9 {
14  public class MediaPlayer
15  {
16  private ContentManager content;
17  private Sound sound;
18  private double volumeHolder = 0;
19 
25  public bool CanPlay
26  {
27  get
28  {
29 #if WINDOWS_PHONE || ANDROID
30  //Microsoft.Xna.Framework.FrameworkDispatcher.Update();
31  return Game.AudioEnabled && Microsoft.Xna.Framework.Media.MediaPlayer.GameHasControl;
32 #else
33  return Game.AudioEnabled;
34 #endif
35  }
36  }
37 
41  public double Volume
42  {
43  get { return sound.Volume; }
44  set { sound.Volume = value; }
45  }
46 
50  public bool IsMuted
51  {
52  get { return Volume == 0; }
53  set
54  {
55  if (value && !IsMuted)
56  {
58  Volume = 0;
59  }
60  else if (!value && IsMuted)
61  {
63  }
64  }
65  }
66 
70  public bool IsRepeating
71  {
72  get { return sound.IsLooped; }
73  set { sound.IsLooped = value; }
74  }
75 
79  public bool IsPlaying
80  {
81  //TODO: Fix
82  get { return Microsoft.Xna.Framework.Media.MediaPlayer.State == MediaState.Playing; }
83  }
84 
85  internal MediaPlayer()
86  {
87  }
88 
93  public void Play(string songName)
94  {
95  if (!CanPlay) return;
96  if (sound != null)
97  {
98  sound.Stop();
99  }
100 
101  try
102  {
103  sound = Game.LoadSoundEffect(songName).CreateSound();
104  }
105  catch (ContentLoadException e)
106  {
107  throw new Exception(
108  "Could not play the song \"" + songName + "\".\n" +
109  "Please check that you added the song to the Content project and typed the name correctly.", e);
110  }
111  sound.Play();
112  }
113 
114 #if WINDOWS
115  public void PlayFromFile( string fileName )
120  {
121  if ( !CanPlay ) return;
122 
123  // Use reflection to get the internal constructor of Song class
124  // The public constructor does not take spaces well!
125  var ctor = typeof( Song ).GetConstructor(
126  BindingFlags.NonPublic | BindingFlags.Instance, null,
127  new[] { typeof( string ), typeof( string ), typeof( int ) }, null );
128 
129  Song song = (Song)ctor.Invoke( new object[] { "name", fileName, 0 } );
130  Microsoft.Xna.Framework.Media.MediaPlayer.Play( song );
131  }
132 #endif
133 
137  public void Pause()
138  {
139  if (!CanPlay) return;
140  sound.Pause();
141  }
142 
146  public void Resume()
147  {
148  if (!CanPlay) return;
149  sound.Resume();
150  }
151 
155  public void Stop()
156  {
157  if (!CanPlay) return;
158  sound.Stop();
159  }
160  }
161 }
Jypeli.MediaPlayer
Mediasoitin, jolla voi soittaa musiikkikappaleita.
Definition: MediaPlayer.cs:15
Jypeli.Game.AudioEnabled
static bool AudioEnabled
Voiko ääniä soittaa.
Definition: Game.cs:128
Jypeli.MediaPlayer.CanPlay
bool CanPlay
Voiko musiikkia soittaa. Windows Phonella rajoituksena on että käyttäjän musiikkia ei saa keskeyttää....
Definition: MediaPlayer.cs:26
Jypeli.MediaPlayer.MediaPlayer
MediaPlayer()
Definition: MediaPlayer.cs:85
Jypeli.MediaPlayer.content
ContentManager content
Definition: MediaPlayer.cs:16
Microsoft.Xna
Definition: JypeliContentManager.cs:6
Jypeli.Sound.Resume
void Resume()
Definition: Sound.cs:85
Jypeli.Sound.Pause
void Pause()
Definition: Sound.cs:95
Jypeli
Definition: Automobile.cs:5
Jypeli.MediaPlayer.IsMuted
bool IsMuted
Onko mediasoitin hiljaisella vai ei.
Definition: MediaPlayer.cs:51
Jypeli.Sound.Volume
double Volume
Äänenvoimakkuus välillä 0.0 - 1.0.
Definition: Sound.cs:41
Microsoft
Definition: JypeliContentManager.cs:6
Jypeli.Sound
Definition: Sound.cs:7
Microsoft.Xna.Framework
Definition: JypeliContentManager.cs:6
Jypeli.MediaPlayer.sound
Sound sound
Definition: MediaPlayer.cs:17
Jypeli.MediaPlayer.IsPlaying
bool IsPlaying
Soitetaanko tällä hetkellä mitään.
Definition: MediaPlayer.cs:80
XnaSong
Microsoft.Xna.Framework.Media.Song XnaSong
Definition: MediaPlayer.cs:3
Jypeli.MediaPlayer.Volume
double Volume
Äänenvoimakkuus välillä 0.0 - 1.0.
Definition: MediaPlayer.cs:42
Jypeli.Sound.Stop
void Stop()
Definition: Sound.cs:90
Jypeli.Sound.IsLooped
bool IsLooped
Jos true, ääntä soitetaan toistuvasti.
Definition: Sound.cs:19
Microsoft.Xna.Framework.Content
Definition: JypeliContentManager.cs:6
Jypeli.SoundEffect.CreateSound
Sound CreateSound()
Luo Sound-tyyppisen olion. Oliolla on ominaisuuksia kuten voimakkuus ja korkeus joita voidaan muuttaa...
Definition: SoundEffect.cs:104
Jypeli.MediaPlayer.IsRepeating
bool IsRepeating
Toistetaanko kappaleita alusta.
Definition: MediaPlayer.cs:71
System
Definition: CFFauxAttributes.cs:29
Jypeli.Game.LoadSoundEffect
static SoundEffect LoadSoundEffect(string name)
Lataa ääniefektin contentista.
Definition: Content.cs:151
Jypeli.MediaPlayer.Play
void Play(string songName)
Soittaa kappaleen.
Definition: MediaPlayer.cs:93
Jypeli.Sound.Play
void Play(int retries=3)
Definition: Sound.cs:63
Jypeli.Game
Definition: Content.cs:46
Jypeli.MediaPlayer.Pause
void Pause()
Pysäyttää soiton.
Definition: MediaPlayer.cs:137
Jypeli.MediaPlayer.volumeHolder
double volumeHolder
Definition: MediaPlayer.cs:18
Jypeli.MediaPlayer.Stop
void Stop()
Keskeyttää soiton.
Definition: MediaPlayer.cs:155
Jypeli.MediaPlayer.Resume
void Resume()
Jatkaa pysäytettyä kappaletta.
Definition: MediaPlayer.cs:146