我有一个物体在屏幕上移动,一旦到达边缘,它就会改变方向并播放声音,这一切都很好,只不过当它播放声音时,我冻结了大约半秒钟,是否有任何方法可以使它平稳运行声音和物体的运动?

-(void)viewDidLoader
{
NSString *path1 = [[NSBundle mainBundle] pathForResource:@"ballbounce" ofType:@"mp3"];
ballbounce = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path1] error: NULL];
[ballbounce prepareToPlay];
}

-(void) ballcollition 
{
[self ballplaysound]
enemy.center = CGPointMake(enemy.center.x+pos.x,enemy.center.y+pos.y);

    if (enemy.center.x > 328 || enemy.center.x < 0)

    {
        pos.x = -pos.x;



    }
}
-(void)ballplaysound
{
if (enemy.center.x > 328 || enemy.center.x < 0 ||enemy.center.y < 0||enemy.center.y < 300)
[ballbounce play];
}

#1楼 票数:1 已采纳

使用系统声音以获得流畅播放的声音。

原始NON-ARC答案:

#import <AudioToolbox/AudioToolbox.h>

- (IBAction)soundButton:(id)sender {

NSString *soundPath = [[NSBundle mainBundle] pathForResource:@"alert" ofType:@"wav"];

SystemSoundID soundID;

AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath: soundPath], &soundID);

AudioServicesPlaySystemSound (soundID);

[soundPath release];

}

已针对ARC更新,并变成了实用程序功能:

- (void)soundPlay:(NSString*)waveName {
    // wavName = @"alert" without any file extension (not alert.wav)

    NSString *soundPath = [[NSBundle mainBundle] pathForResource:waveName ofType: @"wav"];

    SystemSoundID soundID;

    AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath: soundPath], &soundID);

    AudioServicesPlaySystemSound (soundID);


}

#3楼 票数:0

你可以得到完善的“平滑度”与AVPlayer通过简单的转换mp3caf格式解释在这里

#4楼 票数:0

1)创建AVAudioPLayer并将其缓存在应用程序的初始化代码中,再也不会调用它,也要调用prepare。

2)因此您所包含的方法只需要调用play即可;

3)如果您仍然跳过使用

[ballbounce performSelectorOnMainThread:@selector(play) withObject:nil];  

由于您未包含所有代码,并且您显然正在进行绘图-将play方法放在队列中可以使绘图代码完成而不会中断。

正确执行此操作可能会修复您。 使用AudioSystemSound的开销要低得多,但是您应该遵循相同的原则,即在应用初始化时准备任何常用的声音,并且不要在需要它们的确切时间产生它们,以避免性能问题。

  ask by Ben Wilson translate from so

未解决问题?本站智能推荐:

1回复

用Xcode播放随机声音

我正在计划使用此代码使随机声音播放动作,不完全确定如何命名我的声音文件。 谢谢你的帮助。
3回复

在iOS 8.2上播放短音频声音的最佳方法

在iOS 8.2上播放音频的最佳方式是什么?
1回复

在Xcode中重复播放声音的问题

当一帧击中另一帧时,它会播放声音,因此我在did loader中使用了此代码,从而加载了声音 我使用框架 #import <AVFoundation/AVFoundation.h> - (void)viewDidLoad 然后用它播放声音 但是有时候
2回复

Objective-C播放声音

我知道如何在Xcode iOS中播放mp3文件和诸如此类的东西。 但是我如何播放某个频率,就像我只想发出C#音符25秒一样; 我怎么能这样做? (合成器对我来说并不像音符的音高那么重要。)
1回复

如何在iPhone通话期间播放声音

我需要在应用程序中拨打电话,并且需要在通话中播放声音片段。 我该怎么做? 我试过使用AudioToolbox,但通话声音很低。 请帮助我,谢谢! 编辑:感谢您的答案,但它不是流的歌曲; 它用于流播一些录制的句子。 没有人可以帮助我吗? 我需要像模拟麦克风一样直接传输音频,或
1回复

如何立即播放输入声音(如回声)?

我刚刚开始学习iPhone / iPad的音频SDK,但我的问题很简单(希望如此)。 是否可以立即“播放”来自输入的声音? 例如,如果您对着麦克风讲话,我可以立即通过扬声器(或耳机)播放(如声音监听器)吗? (我使用的是xcode 4.2.1,我更喜欢iOS 4.2作为基线)
1回复

iOS 4.3,iPhone 4没有使用UILocalNotification播放自定义声音

有一些类似于我的帖子,但我没有找到一个完全相同的帖子。 这是发生的事情: 在我的应用程序中,我安排了本地通知: 这在iOS 5中运行得很好。在iOS 4.3中,我确保在测试之前确保声音开启且响亮。 当然,文件的持续时间不到30秒。 当它在iPhone 4上触发时,我没有声音,
1回复

播放有声音的iPhone吗?

此代码有什么问题? 我以前用过,但现在收到这些警告... 警告:从不兼容的指针类型传递“ AudioServicesCreateSystemSoundID”的参数2 警告:传递'AudioServicesPlaySystemSound'的参数1会使指针产生整数,而无需强制转换