Итак,возникла необходимость использовать музыку для фона в windows phone 7 приложении,причем специфично: в определенный момент (при наступлении события) воспроизводить звук в зависимости от параметров события.
нашел пример использования и подравнял под себя,
вначале подключаем пространства xna
using Microsoft.Xna.Framework.Audio;
using System.Windows.Threading;
using Microsoft.Xna.Framework;
Далее инициализируем объект звуков
При наступлении события производим поиск элемента в массиве(а лучше в arraylist или какой нибудь другой структуре).Когда убедились в подходящем событии открываем файл с путём к музыке и запускаем её.
void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
{
....
for (int i=0 ; i < masx.Length;i++ )
{
if (masx[i] == lat)
{
if (masy[i] == lon)
{
....
using (var file = IsolatedStorageFile.GetUserStoreForApplication().OpenFile("tour.txt", FileMode.Open))
{
using (var fileReader = new StreamReader(file))
{
while (!fileReader.EndOfStream)
{
string[] line = fileReader.ReadLine().Split('=');
...
if (line[0] == "objsoun[" + i + "]")
{
LoadSoundInstance("tours/NatureOfNovorossArea/" + line[1], out voice, out SoundInstance);
if (SoundInstance.State != SoundState.Playing)
{
SoundInstance.Play();
}
}
}
}
Код корявый и нуждается в оптимизации,но пока работает в тестовом проекте
нашел пример использования и подравнял под себя,
вначале подключаем пространства xna
using Microsoft.Xna.Framework.Audio;
using System.Windows.Threading;
using Microsoft.Xna.Framework;
Далее инициализируем объект звуков
private SoundEffect voice;
private SoundEffectInstance SoundInstance;При наступлении события производим поиск элемента в массиве(а лучше в arraylist или какой нибудь другой структуре).Когда убедились в подходящем событии открываем файл с путём к музыке и запускаем её.
void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
{
....
for (int i=0 ; i < masx.Length;i++ )
{
if (masx[i] == lat)
{
if (masy[i] == lon)
{
....
using (var file = IsolatedStorageFile.GetUserStoreForApplication().OpenFile("tour.txt", FileMode.Open))
{
using (var fileReader = new StreamReader(file))
{
while (!fileReader.EndOfStream)
{
string[] line = fileReader.ReadLine().Split('=');
...
if (line[0] == "objsoun[" + i + "]")
{
LoadSoundInstance("tours/NatureOfNovorossArea/" + line[1], out voice, out SoundInstance);
if (SoundInstance.State != SoundState.Playing)
{
SoundInstance.Play();
}
}
}
}
Код корявый и нуждается в оптимизации,но пока работает в тестовом проекте
Комментариев нет:
Отправить комментарий