2013-02-24 1 views
0

Я пытаюсь воспроизвести зацикленный звуковой файл один раз, каждый раз, когда приложение открыто. Я делаю это, потому что в настоящее время у меня есть код в viewDidLoad моего начального viewController. Проблема заключалась в том, что каждый раз, когда я переключал представления, а затем возвращался к исходному контроллеру представления, он снова воспроизводил звуковой файл, и звуки бы перекрывались, и это звучало просто ужасно. Я разместил свой код ниже. Любая помощь очень ценится, спасибо заранее!Как запустить зацикленный звуковой файл один раз, каждый раз, когда приложение запускается?

{ 


    if (![[NSUserDefaults standardUserDefaults] 
      boolForKey:@"loadSongOnce"]) { 




NSString *path = [[NSBundle mainBundle] pathForResource:@"Cartoon Sound" ofType:@"mp3"]; 
theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL]; 
theAudio.delegate = self; 
theAudio.numberOfLoops = -1; 
[theAudio play]; 


    [[NSUserDefaults standardUserDefaults] setBool:YES 
              forKey:@"loadSongOnce"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 

    } 

} 

ответ

1

Попробуйте

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
//self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
// Override point for customization after application launch. 
//self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; 
// self.window.rootViewController = self.viewController; 
// [self.window makeKeyAndVisible]; 

if(![[[NSUserDefaults standardUserDefaults] valueForKey:@"firstTime"] isEqualToString:@"Yes"]) 
{ 
    [[NSUserDefaults standardUserDefaults] setValue:@"Yes" forKey:@"firstTime"]; 

    [[NSUserDefaults standardUserDefaults] setInteger:([[NSUserDefaults standardUserDefaults] integerForKey:@"ApplaunchCount"] + 1) forKey:@"ApplaunchCount"]; 

    [[NSUserDefaults standardUserDefaults] synchronize]; 
} 
else 
{ 
    [[NSUserDefaults standardUserDefaults] setInteger:([[NSUserDefaults standardUserDefaults] integerForKey:@"ApplaunchCount"] + 1) forKey:@"ApplaunchCount"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 

    if([[NSUserDefaults standardUserDefaults] integerForKey:@"ApplaunchCount"] % 1 ==0) 
    { 
     //Play sound file here 
    } 
} 
return YES;} 

Это показывает, что каждый раз, когда приложение будет убит (закрыт многозадачности), она будет перезапущен звук. Дайте мне знать, если это сработает, и как раньше, если не сообщите мне!

+0

Я пробовал это, и он, похоже, не работает. Музыка просто не играет вообще, когда игра начинается. Я попытался убить приложение и снова открыть его, чтобы посмотреть, начнется ли музыка, но ничего не произошло. Какие-либо предложения? И снова, спасибо за помощь, ха-ха, извините, если это боль. – Dave123

+0

Нет, все в порядке, вы положили его в AppDelegate.m? –

+0

Я удалил приложение из симулятора и снова запустил его, и он отлично сработал! Спасибо за всю помощь :) – Dave123

1

Ну, что вам нужно сделать, это определить погоду, это загрузка приложения в первый раз. Нам нужно сохранить эти данные как NSUserDefaults, потому что это легко и просто.

-(BOOL)application:(UIApplication *)application … { 
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; 
if (! [defaults boolForKey:@"notFirstRun"]) { 
    // display alert... 
    [defaults setBool:YES forKey:@"notFirstRun"]; 
} 
// rest of initialization ...} 

В основном это говорит приложение, если это первый раз загружается приложение, (воспроизведение звука, можно добавить, что), и если нет (не воспроизведения звука). После воспроизведения звука, bool будет знать, что он должен измениться на YES, и он не будет работать снова, пока вы не перезагрузите приложение. Когда вы вернетесь к просмотру, это то, где инструкция if входит в игру, чтобы сообщить приложению, что ДА, вы уже играли звук и не воспроизводили его снова! Сообщите мне, если это сработает, и если нет, я увижу, что я могу сделать!

+0

благодарит за совет! Я попробую это сейчас. – Dave123

+0

Казалось, он отлично работает :). Единственная проблема заключается в том, когда я загружаю приложение на свое устройство, а затем дважды нажимаю кнопку «домой» и закрываю приложение, а затем снова открываю его, музыка перестала играть. Мне жаль, если я получаю слишком специфический характер, но если у вас есть какие-либо советы о том, как исправить это, я бы очень признателен. – Dave123

+0

okay должен опубликовать мой ответ как ответ, а не комментарий, потому что слишком долго. –

Смежные вопросы