0

音や音楽を再生するプレーヤーを実装したい。私には次の2つの方法があります。

-(void)playSound:(int)soundIndex
{
  NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:[SoundFxFilenameArray objectAtIndex:soundIndex] ofType:@"mp3"]];

  if(FxPlayer)
  {
    [FxPlayer release];
    FxPlayer = nil;
  }

  [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategorySoloAmbient error:nil];

  FxPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
  [FxPlayer play]; 
}

-(void)playMusic:(NSString *)filename
{
  NSURL *url = [NSURL URLWithString:[[NSBundle mainBundle] pathForResource:filename ofType:@"mp3"]];

  if(MusicPlayer)
  {
    [MusicPlayer release];
    MusicPlayer = nil;
  }

  MusicPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
  [MusicPlayer play];
}

今、[[SoundPlayer sharedManager] playSound:FXIndex_Default]うまく動作します。私が音楽を演奏しようとすると、[[SoundPlayer sharedManager] playMusic:@"music_file_name_here"何もしません。サウンドファイルと音楽ファイルの両方が同じ形式(mp3)であることに注意してください。

また、「sharedInstance」は、このオーディオプレーヤーにシングルトンパターンを実装したためです。

サウンドは再生できるが音楽は再生できないように、コードの何が悪いのかについての指針やアイデアはありますか?

4

1 に答える 1

0

infileURLWithPathの代わりに使用:URLWithStringplayMusic

NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:filename ofType:@"mp3"]];

URLWithString引数として "file://path/to/file.mp3" のような完全な URL をfileURLWithPath想定し、ファイル パスのみを想定しています。

于 2012-10-22T14:03:04.373 に答える