0

每次打开应用程序时,我都尝试播放一次循环声音文件。我这样做是因为我目前在初始 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

尝试这个

- (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;}

这说明每次app被杀死(关闭就是多任务),都会重启声音。让我知道这是否有效,就像以前一样,如果不让我知道!

于 2013-02-24T07:21:28.490 回答
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 回答