在钢琴等触摸事件中同时播放多个媒体

时间:2016-04-13 12:23:26

标签: ios objective-c touch avaudioplayer piano

我想在触摸事件上播放媒体。 在我的应用程序中有4个按钮。 当用户使用第一个手指点击第一个按钮然后想要在button1上开始播放music1。 使用第二根手指立即点击按钮2然后想要在按钮2上开始播放music2(仍然没有释放他的第一根手指)。 使用第3个手指立即点击按钮3然后想要在按钮3上开始播放音乐3(仍然用户没有释放他的第一个手指和第二个手指)。 我该如何实现呢? 我不知道这个。 请帮帮我。

我只知道如何使用AVAudioPlayer播放音乐。

提前致谢

1 个答案:

答案 0 :(得分:0)

这段代码对我有用。 的 ViewController.h

#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
#import <AudioToolbox/AudioServices.h>

@interface ViewController : UIViewController
{
    NSString *filePath;
}
@property(strong,nonatomic) AVAudioPlayer *playerAudio1;
@property(strong,nonatomic) AVAudioPlayer *playerAudio2;
@property(strong,nonatomic) AVAudioPlayer *playerAudio3;
@property(strong,nonatomic) AVAudioPlayer *playerAudio4;
-(IBAction)btnDownload:(id)sender;
-(IBAction)btn1_DownAction:(id)sender;
-(IBAction)btn2_DownAction:(id)sender;
-(IBAction)btn3_DownAction:(id)sender;
-(IBAction)btn4_DownAction:(id)sender;
-(IBAction)btn_Action:(id)sender;

@end

<强> ViewController.m

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

-(IBAction)btnDownload:(id)sender
{
    NSString *urlToDownload = @"http://leocan.co/Salon/images/album/videos/b.mp3";

    filePath= [appObj downloadFile:urlToDownload filename:@"myAudio.mp3"];
}

-(IBAction)btn1_DownAction:(id)sender
{
    NSString *soundFile;
    soundFile = [[NSBundle mainBundle] pathForResource:@"demo1" ofType:@"mp3"];
    NSURL *fileURL = [NSURL fileURLWithPath:soundFile];
    self.playerAudio1 = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil];
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
    [[AVAudioSession sharedInstance] setActive: YES error: nil];
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    self.playerAudio1.numberOfLoops = -1;
    self.playerAudio1.volume=1;
    [self.playerAudio1 play];
    NSLog(@"hold Down");

}

-(IBAction)btn2_DownAction:(id)sender
{
    NSString *soundFile;
    soundFile = [[NSBundle mainBundle] pathForResource:@"demo2" ofType:@"mp3"];
    NSURL *fileURL = [NSURL fileURLWithPath:soundFile];
    self.playerAudio2 = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil];
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
    [[AVAudioSession sharedInstance] setActive: YES error: nil];
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    self.playerAudio2.numberOfLoops = -1;
    self.playerAudio2.volume=1;
    [self.playerAudio2 play];
    NSLog(@"hold Down");
    }

-(IBAction)btn3_DownAction:(id)sender
{
    NSString *soundFile;
    soundFile = [[NSBundle mainBundle] pathForResource:@"demo3" ofType:@"mp3"];
    NSURL *fileURL = [NSURL fileURLWithPath:soundFile];
    self.playerAudio3 = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil];
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
    [[AVAudioSession sharedInstance] setActive: YES error: nil];
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    self.playerAudio3.numberOfLoops = -1;
    self.playerAudio3.volume=1;
    [self.playerAudio3 play];
    NSLog(@"hold Down");

}

-(IBAction)btn4_DownAction:(id)sender
{
    NSString *soundFile;
    soundFile = [[NSBundle mainBundle] pathForResource:@"demo6" ofType:@"mp3"];
    NSURL *fileURL = [NSURL fileURLWithPath:soundFile];
    self.playerAudio4 = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil];
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
    [[AVAudioSession sharedInstance] setActive: YES error: nil];
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    self.playerAudio4.numberOfLoops = -1;
    self.playerAudio4.volume=1;
    [self.playerAudio4 play];
    NSLog(@"hold Down");
  }

-(IBAction)btn_Action:(id)sender
{
    NSLog(@"hold release");
    if([sender tag]==1)
    {
        [self.playerAudio1 stop];
    }
    else if([sender tag]==2)
    {
        [self.playerAudio2 stop];
    }
    else if([sender tag]==3)
    {
        [self.playerAudio3 stop];
    }
    else
    {
        [self.playerAudio4 stop];
    }
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}