有什么方法可以组成三个班级吗?

时间:2011-07-17 06:19:49

标签: objective-c xcode avaudioplayer

我想要做的是我首先有很多课程,他们都有相同的音乐,正如我在应用程序代表bool应用程序确实完成启动方法。但是在我的最后3节课中,我想要不同的音乐,公平地说,我把这些代码排成一行:

 [(Smart2AppDelegate *)[UIApplication sharedApplication].delegate pauseAudioPlayer];
[(Smart2AppDelegate *)[UIApplication sharedApplication].delegate newAudioPlayer];

在我的app delegate中:

 -(void)newAudioPlayer {

NSString *music = [[NSBundle mainBundle]
                   pathForResource:@"win" ofType:@"m4a"];
audio.delegate = self;
self.audio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:music] error:NULL];

[audio play];
audio.numberOfLoops = -1;
     }

 -(void)pauseAudioPlayer {

[audio pause];
 }

所以它有效,无论何时我去那个视图,它都会改变音乐,让我们调用那个视图,查看x。现在,从那个视图x我可以往返于另外两个视图,例如我可以转到信息页面,然后有一个返回到该视图x的后退按钮,以及与奖品页面相同的内容。但是当我回到视图x时,音乐从头开始,当在这三个类中时,我希望它们全部循环而不是从头开始,因为它听起来很笨拙。原因很简单,因为我把它放在viewDidLoad中。但是我怎么能这样做,我想到了一种实际分组类并在那里放入avaudioplayer方法的方法。

1 个答案:

答案 0 :(得分:0)

这里有一个可能的方法:

  1. 将音乐+声音机制重构为一个单独的类,即Smart2AudioPlayer。
  2. 公开必要的方法:播放,暂停,恢复,以便您可以随时随地使用音频播放器。
  3. 在每个viewDidLoad方法中,调用音频播放器并传递参数以指示谁是发件人(谁想要播放声音)以及表示您是否希望继续播放当前组歌曲的首选项(请参阅下文)或者重新开始。
  4. 在音频播放器中实现必要的逻辑,以允许某些类组关联在一起。这样,当您从属于某个组的类中播放歌曲,并且同一组中的另一个类要求播放音乐时,您将无法再次启动该歌曲,您根本不执行任何操作。
  5. 希望这有帮助