Играйте несколько использований звуковых файлов AVAudioPlayer

Я - планирование выпуска 10 из моих записей песни бесплатно, но связанный в приложении для iPhone. Они не доступны в сети или iTunes или нигде на данный момент.

Я плохо знаком с iPhone sdk (последний), как можно предположить, таким образом, я проходил документацию разработчика, различные форумы и stackoverflow для изучения.

avTouch пример приложения Apple был большим запуском. Но я хочу, чтобы мое приложение играло все эти 10 треков один за другим. Все песни добавляют к папке ресурсов и называют как track1, track2... track10.

В avTouch коде приложения I видят следующие 2 части, который является, где я думаю, что должен внести изменения для достижения того, что я ищу. Но я потерян.

// Load the array with the sample file
NSURL *fileURL = [[NSURL alloc] 
                 initFileURLWithPath: 
                 [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"m4a"]];


- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
if (flag == NO)
    NSLog(@"Playback finished unsuccessfully");

[player setCurrentTime:0.];
[self updateViewForPlayerState];
}

может любой помогать мне на
1. как загрузить массив всеми 10 дорожками, которые добавляются к папке ресурсов
2. и когда я поразил игру, плеер должен запустить первую дорожку. когда 1-я дорожка заканчивается, 2-я дорожка должна запуститься и так далее для остающихся дорожек.

Спасибо

7
задан inScript09 7 April 2010 в 10:36
поделиться

1 ответ

inScript, вы уже нашли решение? вы можете использовать что-то простое, например if {// do something} else {// do something else} , чтобы воспроизвести их последовательно.

Для загрузки в массив создайте новый файл plist (щелкните правой кнопкой мыши на дереве каталогов -> Добавить -> Новый файл "и найдите там список свойств; назовите файл Soundlist. Затем откройте этот новый файл, щелкните правой кнопкой мыши по там, где по умолчанию написано "Словарь", перейдите к "Тип значения" и выберите "Массив" ... Если вы посмотрите в крайний правый угол этой строки, вы увидите небольшую кнопку с 3 полосами, нажмите на нее чтобы добавить свой первый элемент. Теперь вы добавляете по одному элементу за раз, «track01», «track02» и т. д., по одному в строке.

Этот код помещается в ваш .h файл:

NSArray* soundsList;

Этот код входит в ваш .m файл:

NSString *soundsPath = [[NSBundle mainBundle] pathForResource:@"soundslist" ofType:@"plist"];
soundsList = [[NSArray alloc] initWithContentsOfFile:soundsPath];

Массивы всегда начинаются с индекса # 0 ... поэтому, если у вас 5 треков, track01 будет индексом 0, track02 будет индексом 1 и т. д. Если вы хотите быстро опросить свой массив, чтобы увидеть что в нем, вы можете добавить этот бит кода:

int i = 0;

for (i; i <= ([soundsList count] - 1); i++) {

    NSLog(@"soundsList contains %@", [soundsList objectAtIndex:i]);

}

Все, что нужно сделать, это подсчитать, сколько элементов находится в вашем массиве (например, 5 или 10 или сколько угодно песен), и objectAtIndex: вернет объект под любым порядковым номером, который вы отправите в него.

Для игры в ба ck-to-back вы просто поместите оператор if-then в метод audioPlayerDidFinishPlaying

Если вы хотите воспроизвести файл, вы можете сделать следующее:

NSString* filename = [soundsList objectAtIndex:YOURINDEXNUMBER];
NSString *path = [[NSBundle mainBundle] pathForResource:filename ofType:@"mp3"];  

AVAudioPlayer * newAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];  
self.theAudio = newAudio; // automatically retain audio and dealloc old file if new file is loaded

[newAudio release]; // release the audio safely

theAudio.delegate = self; 
[theAudio prepareToPlay];
[theAudio setNumberOfLoops:0];
[theAudio play];

где YOURINDEXNUMBER - это любой трек # который вы хочу поиграть (помните, 0 = track01, 1 = track02 и т. д.)

Если вам нужна помощь в настройке переменных в вашем .h файле, дайте мне знать, и я могу помочь вам в этом.Также не забудьте освободить theAudio в вашем методе dealloc, чтобы он освободил его при выходе из программы.

8
ответ дан 7 December 2019 в 05:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: