×
Namespaces

Variants
Actions

Memainkan Background Music pada Silverlight for Windows Phone

From Nokia Developer Wiki
Jump to: navigation, search

Artikel ini menjelaskan bagaimana caranya untuk memainkan background music pada Silverlight for Windows Phone.

WP Metro Icon Multimedia.png
SignpostIcon XAML 40.png
WP Metro Icon XNA.png
SignpostIcon WP7 70px.png
Article Metadata

Kecocokan
Platform(s):
Windows Phone 7.5

Artikel
Created: Jeffrey.Halimsetiawan (23 Sep 2012)
Perubahan Terakhir: hamishwillee (15 Aug 2013)

Pendahuluan

Suatu game tentu tidak lengkap rasanya apabila tidak dilengkapi dengan musik yang mendukung. Jika suatu game dikembangkan dengan Silverlight for Windows Phone, framework tersebut telah menyediakan kemudahan untuk memutar file musik berformat mp3 dan wma melalui kelas MediaElement. Sayangnya, MediaElement harus ditambahkan sebagai UIElement pada antarmuka sehingga musik akan diputar kembali dari awal kembali saat terjadi perpindahan PhoneApplicationPage ke PhoneApplicationPage lainnya. Selain itu, dua objek MediaElement pada antarmuka yang sama tidak dapat memainkan musik secara bersamaan sehingga background music dan sound effect dari game juga tidak dapat berjalan bersamaan. Oleh karena itu, beberapa kelas yang terdapat pada framework XNA dalam Microsoft.Xna.Framework.dll dapat dimanfaatkan untuk memutar musik.

Prosedur

Kelas MediaPlayer dan Song dalam Microsoft.Xna.Framework.Media dapat dimanfaatkan untuk memutar musik berformat mp3 dengan cara sebagai berikut:

Song song = Song.FromUri(GameBgm, new Uri("Sounds/pdgbulan.mp3", UriKind.Relative));
MediaPlayer.IsRepeating = true;
MediaPlayer.Play(song);

Sedangkan kelas SoundEffect dalam Microsoft.Xna.Framework.Audio dapat dimanfaatkan untuk memainkan efek suara berformat wav dengan cara sebagai berikut:

SoundEffect se = SoundEffect.FromStream(TitleContainer.OpenStream("Sounds/click.wav"));
se.Play();

Salah satu pendekatan sederhana yang dapat dilakukan untuk mengatur pemutaran background music dan sound effect adalah pembuatan suatu kelas singleton bernama SoundManager seperti di bawah ini:

///
/// Author: Jeffrey Hermanto Halimsetiawan
///
public class SoundManager
{
#region Constant
 
private const string NormalBgm = "gundhul";
private const string GameBgm = "pdgbulan";
 
#endregion
#region Variable
 
private bool _isMute;
private static SoundManager _instance;
private string _lastBgm = string.Empty;
#endregion
 
private SoundManager()
{
_isMute = false;
}
 
public bool IsMute
{
get
{
return _isMute;
}
set
{
_isMute = value;
if (_isMute)
MediaPlayer.Stop();
}
}
 
public static SoundManager GetInstance()
{
if (_instance == null)
{
_instance = new SoundManager();
}
return _instance;
}
 
public void PlayBgm(PhoneApplicationPage page)
{
if (IsMute)
return;
 
Song song = null;
if (page is GamePage)
{
song = Song.FromUri(GameBgm, new Uri("Sounds/pdgbulan.mp3", UriKind.Relative));
if (_lastBgm != GameBgm)
{
PlaySong(song);
}
_lastBgm = GameBgm;
}
else
{
song = Song.FromUri(NormalBgm, new Uri("Sounds/gundhul.mp3", UriKind.Relative));
if (_lastBgm != NormalBgm)
{
PlaySong(song);
}
_lastBgm = NormalBgm;
}
 
}
 
private void PlaySong(Song song)
{
MediaPlayer.Stop();
MediaPlayer.IsRepeating = true;
MediaPlayer.Play(song);
}
 
///
/// Play WAVE File
///
public void PlaySoundEffectClick()
{
if (IsMute)
return;
SoundEffect se = SoundEffect.FromStream(TitleContainer.OpenStream("Sounds/click.wav"));
se.Play();
}
}

Cara untuk menjalankan background music pada suatu PhoneApplicationPage adalah sebagai berikut:

SoundManager.GetInstance().PlayBgm(this);

Semoga bermanfaat!

This page was last modified on 15 August 2013, at 14:03.
88 page views in the last 30 days.
×