如何根据页码使用按钮播放不同的声音?

时间:2015-01-07 04:58:28

标签: ios objective-c avaudioplayer

在这里编程新手。使用本指南设置我的网页:http://www.appcoda.com/uipageviewcontroller-storyboard-tutorial/

我用来播放音频的代码是:

NSString *path    = [[NSBundle mainBundle] pathForResource:@"1" ofType:@"mp3"];
theAudio          = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
theAudio.delegate = self;
[theAudio play];

我的目标是在按下按钮时播放不同的声音文件,每个声音对应于页码。按钮在整个页面中保持不变,只是尝试更改将每个页面连接到新声音的代码。

2 个答案:

答案 0 :(得分:0)

您需要跟踪当前页面。委托方法pageViewController:didFinishAnimating:previousViewControllers:transitionCompleted:将告诉您用户是否更改了页面,以便您可以更新当前页码变量。它看起来像是什么,

-(void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed
{

    if(completed)
    {

        //update variable and play the audio file respectively
    }
}  

答案 1 :(得分:-1)

您的代码中没有包含足够的信息。但我将解释一种将声音实现到应用程序中的简单方法,然后您可以构建它。

第一: 将AudioToolbox框架导入您的项目。然后,将声音文件拖放到项目中。导航到视图控制器并导入头文件:

#import <AVFoundation/AVFoundation.h>

您的视图控制器标题应类似于:

@interface ViewController : ParentClass {
    AVAudioPlayer *_audioPlayer1;
}

然后,我们将声明一个按钮,我们将把它放在故事板上。请记住,IBOutlet通常总是很弱。

@property (weak, nonatomic) IBOutlet UIButton *button1;
- (IBAction)playSound;

现在,在你的播放声音方法中,添加它(希望你已经意识到在故事板中创建一个按钮并链接插座和IBAction):

- (IBAction)playSound
NSString *path = [[NSBundle mainBundle] pathForResource:"nameofsound" ofType:@"wav(or other ext)"];

NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: path];

    _audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil];
    [_audioPlayer prepareToPlay];
    [_audioPlayer play];
}

现在,对于页面事物:UITableView有一个名为pageViewController:didFinishAnimating:previousViewControllers:transitionCompleted:的委托。利用它。理论上它看起来会像:

-(void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed
{

}

此时我将所有声音加载到一个数组中,其索引对应于页码