Загрузите музыкальные файлы в моем приложении iphone - PullRequest
1 голос
/ 14 августа 2010

Здравствуйте, все это мой первый пост здесь я работал в приложении для iPhone, это звучит как маленький музыкальный инструмент Я использовал этот код для загрузки моих музыкальных нот:

// get the path of the sound file
NSString *soundPath = [[NSBundle mainBundle] pathForResource:@"do"
                                                      ofType:@"mp3"];

// create a URL with the given path
NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:soundPath];

// initialize the AVAudioPlayer with the sound file
btn_do = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL
                                                   error:nil];
[fileURL release];

и т. Д. Для всех остальных заметок (re, me, fa, sol, la, ci)

мой вопрос: Является ли этот метод правильным, потому что я должен написать этот код почти 16 раз, есть ли лучше или остаться, как я. Спасибо

Ответы [ 2 ]

0 голосов
/ 14 августа 2010

По сути код правильный. Если вы хотите настроить несколько заметок, самый простой способ сделать это более эффективным - создать метод, который вы можете запустить для каждой заметки. Итак, создайте новый метод, который принимает строку и возвращает новый элемент AVAudioPlayer:

- (AVAudioPlayer *)getNoteFromFilename:(NSString *)name {
  NSString *soundPath = [[NSBundle mainBundle] pathForResource:name
                                                  ofType:@"mp3"];
  NSURL *fileURL = [NSURL fileURLWithPath:soundPath];
  AVAudioPlayer *note = [[[AVAudioPlayer alloc] initWithContentsOfURL:fileURL
                                                  error:nil] autorelease];
  return note;
}

(Обратите внимание, что для удобства я поменял метод NSURL, авто-релиз, который устраняет необходимость его отдельного освобождения. Мы также возвращаем автоматически выпущенный объект note, в соответствии с соглашением)

Затем вы можете вызвать этот метод следующим образом:

btn_do = [self getNoteFromFilename:@"do"];
btn_re = [self getNoteFromFilename:@"re"];

и так далее! ...

Редактировать: следующая задача - попробуйте поместить их в массив, чтобы у вас была только одна переменная, за которой нужно следить! Вы можете сделать индекс в массиве соответствующим свойству 'tag' каждой отдельной кнопки, которая вызывает заметку ...

0 голосов
/ 14 августа 2010

Дайте в примечаниях систематические названия и напишите для этого цикл.Может быть, вы можете сделать это с помощью списка.

...