Jypeli 10
The simple game programming library
Sound.cs
Siirry tämän tiedoston dokumentaatioon.
1using Microsoft.Xna.Framework.Audio;
2using System;
3
4namespace Jypeli
5{
10 public class Sound
11 {
12 SoundEffectInstance effectInstance;
13
14 static double Clamp( double value, double min, double max )
15 {
16 return ( value < min ) ? ( min ) : ( ( value > max ) ? ( max ) : ( value ) );
17 }
18
22 public bool IsLooped
23 {
24 get { return effectInstance.IsLooped; }
25 set { effectInstance.IsLooped = value; }
26 }
27
35 public double Pan
36 {
37 get { return effectInstance.Pan; }
38 set { effectInstance.Pan = (float)Clamp( value, -1.0, 1.0 ); }
39 }
40
44 public double Volume
45 {
46 get { return effectInstance.Volume; }
47 set { effectInstance.Volume = (float)Clamp( value, 0.0, 1.0 ); }
48 }
49
56 public double Pitch
57 {
58 get { return effectInstance.Pitch; }
59 set { effectInstance.Pitch = (float)Clamp( value, -1.0, 1.0 ); }
60 }
61
66 public SoundState State
67 {
68 get => effectInstance.State;
69 }
70
71 internal Sound( SoundEffectInstance s )
72 {
74 }
75
80 public void Play( int retries = 3 )
81 {
82 try
83 {
84 effectInstance.Play();
85 }
86#if !WINDOWS_STOREAPP
87 catch ( NullReferenceException )
88 {
89 Console.Error.WriteLine( "Null reference exception trying to play a sound, disabling audio" );
91 }
92#endif
93 catch ( InvalidOperationException )
94 {
95 // Workaround: Sometimes on Android an InvalidOperationException is thrown when playing a sound
96 // Trying again seems to work; if not, no sound is better than crashing the game
97 if ( retries > 0 )
98 Play( retries - 1 );
99 }
100 }
101
105 public void Resume()
106 {
107 effectInstance.Resume();
108 }
109
113 public void Stop()
114 {
115 effectInstance.Stop();
116 }
117
121 public void Pause()
122 {
123 effectInstance.Pause();
124 }
125 }
126}
static void DisableAudio()
Definition: Game.cs:235
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
Sound(SoundEffectInstance s)
Definition: Sound.cs:71
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
SoundEffectInstance effectInstance
Definition: Sound.cs:12
double Pan
Äänen kuuluminen vasemmasta ja oikeasta kaiuttimesta. Arvot vaihtelevat välillä -1....
Definition: Sound.cs:36
bool IsLooped
Jos true, ääntä soitetaan toistuvasti.
Definition: Sound.cs:23
static double Clamp(double value, double min, double max)
Definition: Sound.cs:14
double Pitch
Äänenkorkeus välillä -1.0 - 1.0.
Definition: Sound.cs:57