играет второй звук - PullRequest
       7

играет второй звук

0 голосов
/ 18 февраля 2012

я пытаюсь создать простое приложение на основе AVAudioPlayer для воспроизведения 2 разных музыкальных композиций при нажатии кнопки, есть 2 вида, первый - это домашний вид, содержащий 2 кнопки, каждая кнопка задает песню, которая называется целочисленной , 2.mp3 ..... и т. Д.) И вот код

#import "podHome.h"
#import "podMusic.h"
#import "ArabAppDelegate.h"


@implementation podHome

@synthesize song1;
@synthesize tabi;   
int CurrentPlay;
NSString *Currenttxt;


-(IBAction)uae{
    CurrentPlay=1;
    Currenttxt=@"uae";
    podMusic *newContro=[[podMusic alloc] init];
    [newContro setCurrentPlay1:CurrentPlay setCurrentText:Currenttxt];

    ArabAppDelegate *theDelegate = (ArabAppDelegate*)[[UIApplication sharedApplication] delegate];
    tabi = theDelegate.tabcontrolPod;
    tabi.selectedIndex = 1;
    [newContro release];
}

-(IBAction)libya{
    CurrentPlay=2;
    Currenttxt=@"uae";
    podMusic *newContro=[[podMusic alloc] init];
    [newContro setCurrentPlay1:CurrentPlay setCurrentText:Currenttxt];

    ArabAppDelegate *theDelegate = (ArabAppDelegate*)[[UIApplication sharedApplication] delegate];
    tabi = theDelegate.tabcontrolPod;
    tabi.selectedIndex = 1;
    [newContro release];
}

эти буксиры (IBActions) связаны с двумя кнопками, при нажатии на одну из которых они переключаются на другой вид и начинают воспроизведение песни

- (void)viewWillAppear:(BOOL)animated {

    if((played == 1)&&(isBacked==FALSE)){

    NSString *filePath = [[NSBundle mainBundle] pathForResource:texting 
                                                         ofType:@"txt"];

    NSString *filenameString = [NSString stringWithContentsOfFile:filePath usedEncoding:nil error:nil];
    CurrentTex.text = filenameString;
    AudioSessionInitialize(NULL, NULL, NULL, NULL);
        UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
        AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,sizeof(sessionCategory), &sessionCategory);
        AudioSessionSetActive(YES);  

        playBtnBG = [[UIImage imageNamed:@"play-pod.png"] retain];
        pauseBtnBG = [[UIImage imageNamed:@"pause-pod.png"] retain];
        [playButton setBackgroundImage:pauseBtnBG forState:UIControlStateNormal];

        [self registerForBackgroundNotifications];

        updateTimer = nil;

        duration.adjustsFontSizeToFitWidth = YES;
        currentTime.adjustsFontSizeToFitWidth = YES;
        progressBar.minimumValue = 0.0; 
        NSString *path=[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%d",CurrentPlay] ofType:@"mp3"];
        self.player=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
        [player stop];
        //self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil];    
        if (self.player)
        {
            [self updateViewForPlayerInfo:player];
            [self updateViewForPlayerState:player];
            player.numberOfLoops = 0;
            player.delegate = self;
        }
        [self startPlaybackForPlayer:player];
        fileName.text= [[NSString alloc]initWithFormat:@"%@", songName];
      // [fileURL release];
//        CurrentPlay = 0;
               isBacked = TRUE;
    }

        [super viewWillAppear:animated];
}

- (void)setCurrentPlay1:(int)varP setCurrentText:(NSString *)varT{

    CurrentPlay = varP;
    texting = varT;
    played = 1;
    isBacked = FALSE;
}

но проблема в том, что когда песня воспроизводится и я возвращаюсь к исходному виду и нажимаю на кнопку другой песни, она начинает играть с первой одновременно, я думаю, что первая должна остановиться, чтобы начать другую Что я должен выпустить, чтобы сделать это ???

Ответы [ 2 ]

0 голосов
/ 18 февраля 2012

В вашем первом действии кнопки напишите так.

if(player2.isPlaying)
{
[player2 stop];
}

таким же образом сделайте то же самое во втором действии кнопки, как это.

if(player1.isPlaying)
{
[player1 stop];
}
0 голосов
/ 18 февраля 2012

Я предполагаю, что у вас есть два экземпляра AVAudioPlayer, и когда вы настраиваете их обоих на игру, они оба делают это!

Одним из решений было бы сказать другим игрокам остановиться, когда вы активируете новый., но это быстро станет проблематичным, когда количество игроков увеличится.

Вместо вас лучше было бы просто настроить одного игрока и изменить его песню в соответствии с тем, какая кнопка была нажата.Таким образом, нет шансов, что два музыкальных трека будут воспроизводиться одновременно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...