0

アプリを開くたびに、ループしたサウンドファイルを1回再生しようとしています。私は現在、最初のviewControllerのviewDidLoadにコードがあるため、これを行っています。問題は、ビューを切り替えてから最初のビューコントローラに戻るたびに、サウンドファイルが再度再生され、サウンドがオーバーラップして、ひどい音になってしまうことでした。以下にコードを投稿しました。事前に感謝します、どんな助けでも大歓迎です!

{


    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];

    }

}
4

2 に答える 2

1

さて、あなたがする必要があるのは、これがアプリをロードするのが初めてかどうかを判断することです。このデータは簡単でシンプルなので、NSUserDefaultsとして保存する必要があります。

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

基本的に、これはアプリをロードするのが初めてかどうか(サウンドを再生し、それを追加します)、そうでない場合(サウンドを再生しない)をアプリに通知します。サウンドが再生された後、ブール値はそれがYESに変わる必要があることを認識し、アプリをリロードするまで再び実行されません。ビューに戻ると、ifステートメントが機能して、アプリに「はい」と通知し、サウンドを再度再生しないようにします。これが機能するかどうかを教えてください。機能しない場合は、何ができるかを確認します。

于 2013-02-24T06:09:31.807 に答える
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;}

これは、アプリが強制終了されるたびに(クローズはマルチタスクです)、サウンドを再起動することを示しています。これが機能するかどうかを知らせてください。機能しない場合は以前と同じように知らせてください。

于 2013-02-24T07:21:28.490 に答える