-1

我正在制作一个泡泡爆破游戏并遇到了一些障碍:/

我有一个声音(pop.mp3),每次点击一个气泡时都需要播放这个声音

所有的气泡都是调用相同方法的按钮 (-(IBACTION)bubblePop)

我在 Viewdidload 方法中初始化了一个 AVAudioPlayer

并在bubblePop方法中调用它的播放功能

这显然不起作用,但是因为气泡的爆裂声一次只播放一个,它不会像我期望的那样重叠

有人知道我怎么解决这个问题吗?

额外信息

如果我在bubblePop中初始化音频播放器,我根本听不到声音

4

1 回答 1

0

您应该在 bubblePop 中初始化 AVPlayer 并保持对它的强引用。尝试这个:

@interface ViewController()
@property (strong, nonatomic) NSMutableDictionary *players;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.players = [[NSMutableDictionary alloc] init];
}

- (void)bubblePop {
    NSURL *URL = your sound URL;

    AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:URL];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(itemDidFinishPlaying:) name:AVPlayerItemDidPlayToEndTimeNotification object:playerItem];

    AVPlayer *player = [[AVPlayer alloc] initWithPlayerItem:playerItem];
    self.players[playerItem] = player;

    [player play];
}


-(void)itemDidFinishPlaying:(AVPlayerItem *)sender {
    [self.players removeObjectForKey:sender];
}
@end
于 2013-10-26T19:13:42.293 回答