0

2 つの異なるサウンドを同時に再生しようとしています。これは、すべてのコードを 2 つの別々のメソッドに入れると完全に機能します。代わりに、soundplayer コードを含むメソッドを作成し、曲名を引数として別のメソッドからそのメソッドを呼び出すことを考えました。これは機能します...ほぼ。

ボタン 1 を押す -> サウンド 1 が再生されます。良い!!!ボタン 2 を押す -> サウンド 1 が停止し、サウンド 2 が開始します。良くない!!!

音1から指を離す音2の作り方。

これがコードです。おそらく単純なものですが、しばらく立ち往生しています。

.
.
.
-(IBAction) playSound1
{
    NSString *nameOfSong = @"song1";
   [self nowPlay:nameOfSong];
}

-(IBAction) playSound2
{
    NSString *nameOfSong = @"song2";
    [self nowPlay:nameOfSong];
}

-(void) nowReallyPlay:(NSString*) whatsTheName
{ 
    NSURL *playSong = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:whatsTheName ofType:@"mp3"]];  
    self.soundPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:playSong error:nil];
    soundPlayer.delegate = self;
    soundPlayer.volume= 0.5;
    soundPlayer.numberOfLoops = 0;
    [soundPlayer play];
}
.
.
.
4

1 に答える 1

0

2 つの異なる AudioPlayers を定義し、if ステートメントを使用してどちらを再生するかを選択することで解決しました。

それは機能しますが、私の正直な意見ではまだあまりセクシーではありません. 私のプログラム (私の小さな女の子のためのアプリ) では問題なく動作しますが、1 つで 25 のサウンドを再生したい場合はどうすればよいでしょうか? 25 個の AVPlayer を作成する必要がありますか?

このハードルを乗り越える別の (よりセクシーな) 方法はありますか?

.
.
-(IBAction) playSound1
{
NSString *nameOfSong = @"song1";
NSString *playThis = @"first_song";
[self nowPlay:nameOfSong:playThis];
}

-(IBAction) playSound2
{
NSString *nameOfSong = @"song2";
NSString *playThis = @"second_song";
[self nowPlay:nameOfSong:playThis];
}

-(void) nowReallyPlay:(NSString*) whatsTheName : (NSString*) playWhat
{ 
if (playWhat == @"first_song")
{
    NSURL *playSong = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:whatsTheName ofType:@"mp3"]];  
    self.soundPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:playSong error:nil];
    sound1Player.delegate = self;
    sound1Player.volume= 0.5;
    sound1Player.numberOfLoops = 0;
    [sound1Player play];

} else if (playWhat == @"second_song"") {

    NSURL *playSong = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:whatsTheName ofType:@"mp3"]];  
    self.sound2Player = [[AVAudioPlayer alloc] initWithContentsOfURL:playSong error:nil];

    sound2Player.delegate = self;
    sound2Player.volume= 0.5;
    sound2Player.numberOfLoops = 0;
    [sound2Player play];
    }
}
.
.
于 2012-10-03T08:12:51.027 に答える