Jypeli 10
The simple game programming library
MediaPlayer.cs
Siirry tämän tiedoston dokumentaatioon.
1using System;
2using Microsoft.Xna.Framework.Content;
3using XnaSong = Microsoft.Xna.Framework.Media.Song;
4using Microsoft.Xna.Framework.Audio;
5
6namespace Jypeli
7{
12 public class MediaPlayer
13 {
14 private Sound sound;
15 private double volumeHolder = 0;
16
22 public bool CanPlay
23 {
24 get
25 {
26#if WINDOWS_PHONE || ANDROID
27 //Microsoft.Xna.Framework.FrameworkDispatcher.Update();
28 return Game.AudioEnabled && Microsoft.Xna.Framework.Media.MediaPlayer.GameHasControl;
29#else
30 return Game.AudioEnabled;
31#endif
32 }
33 }
34
38 public double Volume
39 {
40 get { return sound.Volume; }
41 set { sound.Volume = value; }
42 }
43
47 public bool IsMuted
48 {
49 get { return Volume == 0; }
50 set
51 {
52 if (value && !IsMuted)
53 {
55 Volume = 0;
56 }
57 else if (!value && IsMuted)
58 {
60 }
61 }
62 }
63
67 public bool IsRepeating
68 {
69 get { return sound.IsLooped; }
70 set { sound.IsLooped = value; }
71 }
72
76 public bool IsPlaying
77 {
78 get { return sound?.State == SoundState.Playing; }
79 }
80
81 internal MediaPlayer()
82 {
83 }
84
89 public void Play(string songName)
90 {
91 if (!CanPlay) return;
92 if (sound != null)
93 {
94 sound.Stop();
95 }
96
97 try
98 {
100 }
101 catch (ContentLoadException e)
102 {
103 throw new Exception(
104 "Could not play the song \"" + songName + "\".\n" +
105 "Please check that you added the song to the Content project and typed the name correctly.", e);
106 }
107 sound.Play();
108 }
109
110#if WINDOWS
115 public void PlayFromFile( string fileName )
116 {
117 if ( !CanPlay ) return;
118
119 // Use reflection to get the internal constructor of Song class
120 // The public constructor does not take spaces well!
121 var ctor = typeof( Song ).GetConstructor(
122 BindingFlags.NonPublic | BindingFlags.Instance, null,
123 new[] { typeof( string ), typeof( string ), typeof( int ) }, null );
124
125 Song song = (Song)ctor.Invoke( new object[] { "name", fileName, 0 } );
126 Microsoft.Xna.Framework.Media.MediaPlayer.Play( song );
127 }
128#endif
129
133 public void Pause()
134 {
135 if (!CanPlay || sound == null) return;
136 sound.Pause();
137 }
138
142 public void Resume()
143 {
144 if (!CanPlay || sound == null) return;
145 sound.Resume();
146 }
147
151 public void Stop()
152 {
153 if (!CanPlay || sound == null) return;
154 sound.Stop();
155 }
156 }
157}
Microsoft.Xna.Framework.Media.Song XnaSong
Definition: MediaPlayer.cs:3
static SoundEffect LoadSoundEffect(string name)
Lataa ääniefektin contentista.
Definition: Content.cs:157
static bool AudioEnabled
Voiko ääniä soittaa.
Definition: Game.cs:140
Mediasoitin, jolla voi soittaa musiikkikappaleita.
Definition: MediaPlayer.cs:13
bool IsMuted
Onko mediasoitin hiljaisella vai ei.
Definition: MediaPlayer.cs:48
bool? IsPlaying
Soitetaanko tällä hetkellä mitään.
Definition: MediaPlayer.cs:77
void Stop()
Keskeyttää soiton.
Definition: MediaPlayer.cs:151
void Resume()
Jatkaa pysäytettyä kappaletta.
Definition: MediaPlayer.cs:142
bool CanPlay
Voiko musiikkia soittaa. Windows Phonella rajoituksena on että käyttäjän musiikkia ei saa keskeyttää....
Definition: MediaPlayer.cs:23
void Pause()
Pysäyttää soiton.
Definition: MediaPlayer.cs:133
double Volume
Äänenvoimakkuus välillä 0.0 - 1.0.
Definition: MediaPlayer.cs:39
bool IsRepeating
Toistetaanko kappaleita alusta.
Definition: MediaPlayer.cs:68
void Play(string songName)
Soittaa kappaleen.
Definition: MediaPlayer.cs:89
Sound CreateSound()
Luo Sound-tyyppisen olion. Oliolla on ominaisuuksia kuten voimakkuus ja korkeus joita voidaan muuttaa...
Definition: SoundEffect.cs:110
Yleinen äänen toistamiseen käytettävä luokka. Tällä ei ole kovin suuria eroja SoundEffect-luokan kans...
Definition: Sound.cs:11
void Play(int retries=3)
Toistaa äänen
Definition: Sound.cs:80
void Stop()
Pysäyttää äänen toistamisen
Definition: Sound.cs:113
SoundState State
Äänen tila.
Definition: Sound.cs:67
void Resume()
Jatkaa äänen toistamista
Definition: Sound.cs:105
double Volume
Äänenvoimakkuus välillä 0.0 - 1.0.
Definition: Sound.cs:45
void Pause()
Keskeyttää äänen toistamisen
Definition: Sound.cs:121
bool IsLooped
Jos true, ääntä soitetaan toistuvasti.
Definition: Sound.cs:23