如何使用按钮根据页码播放不同的声音?
How can I use a button to play different sounds depending the page number?
这里是编程新手。使用本指南设置我的页面: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];
我的目标是在按下按钮时播放不同的声音文件,每个声音对应于页码。该按钮在整个页面中都是不变的,只是试图更改将其连接到每个页面的新声音的代码。
您需要跟踪当前页面。委托方法 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
}
}
您的代码中包含的信息不足。但我将解释一种将声音实现到应用程序中的简单方法,然后您可以在此基础上进行构建。
首先:
将 AudioToolbox 框架导入您的项目。然后,将声音文件拖放到您的项目中。导航到视图控制器并导入 header 文件:
#import <AVFoundation/AVFoundation.h>
您的视图控制器 header 应类似于此:
@interface ViewController : ParentClass {
AVAudioPlayer *_audioPlayer1;
}
然后,我们将声明一个按钮,我们将在故事板上放置并连接该按钮。请记住,IBOutlet 通常总是很弱。
@property (weak, nonatomic) IBOutlet UIButton *button1;
- (IBAction)playSound;
现在,在你的播放声音方法中,添加这个(希望你已经意识到在故事板中创建一个按钮和 link 插座和 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
{
}
那时我将所有声音加载到一个数组中,索引对应于页码,
这里是编程新手。使用本指南设置我的页面: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];
我的目标是在按下按钮时播放不同的声音文件,每个声音对应于页码。该按钮在整个页面中都是不变的,只是试图更改将其连接到每个页面的新声音的代码。
您需要跟踪当前页面。委托方法 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
}
}
您的代码中包含的信息不足。但我将解释一种将声音实现到应用程序中的简单方法,然后您可以在此基础上进行构建。
首先: 将 AudioToolbox 框架导入您的项目。然后,将声音文件拖放到您的项目中。导航到视图控制器并导入 header 文件:
#import <AVFoundation/AVFoundation.h>
您的视图控制器 header 应类似于此:
@interface ViewController : ParentClass {
AVAudioPlayer *_audioPlayer1;
}
然后,我们将声明一个按钮,我们将在故事板上放置并连接该按钮。请记住,IBOutlet 通常总是很弱。
@property (weak, nonatomic) IBOutlet UIButton *button1;
- (IBAction)playSound;
现在,在你的播放声音方法中,添加这个(希望你已经意识到在故事板中创建一个按钮和 link 插座和 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
{
}
那时我将所有声音加载到一个数组中,索引对应于页码,