-1

私は非常に奇妙な問題に直面しています。私の要件は、ボタンのクリックでサウンドを再生することであり、これが私のコードです:

- (void)viewDidLoad
{
    [super viewDidLoad];    
    NSString *path=[[NSBundle mainBundle] pathForResource:@"button-3" ofType:@"mp3"];
    tapSound=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL]];
    [tapSound prepareToPlay];
    tapSound.delegate=self;

    //creating the button in view did load and button is declared in .h
    btn=[UIButton buttonWithType:UIButtonTypeCustom];
    btn.frame=CGRectMake(x, y, 58,58);
    [btn addTarget:self action:@selector(btnClkd:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn];
}

//click method
-(void)btnClkd:(UIButton*)sender
{
[tapSound play];
}

しかし、コードを実行してボタンをクリックすると、アプリがクラッシュし、次のエラーが発生しました。

しかし、ボタンのクリックではなく、他の場所でサウンドを再生すると、問題なく再生されます。なぜこれが起こっているのかわかりませんか? 私を助けてください

4

2 に答える 2

2

これを行う:

-(void)btnClkd:(UIButton*)sender
{
   NSString *path=[[NSBundle mainBundle] pathForResource:@"button-3" ofType:@"mp3"];
   tapSound = nil;
   tapSound=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL]];
   [tapSound prepareToPlay];
   tapSound.delegate=self;
   [tapSound play];
}
于 2012-09-25T05:34:00.673 に答える
0

これを試してください。.hファイルを追加します

 .h file 



         #import <AVFoundation/AVFoundation.h>
            #import <AudioUnit/AudioUnit.h>


        AVAudioPlayer *player1;

        @property(nonatomic ,retain)AVAudioPlayer *player1;

in your .m file 




@synthesize  player1;



    - (void)viewDidLoad
        {
            [super viewDidLoad];    

 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];    
            NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"button-3" ofType:@"mp3"];    
            NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:soundFilePath];    
            AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil];    
            [fileURL release]; 
            self.player1 = audioPlayer;    
            [audioPlayer release]; 
           [self.player1 prepareToPlay];
          [self.player1 setDelegate:self];
           [pool release]; 

            //creating the button in view did load and button is declared in .h
            btn=[UIButton buttonWithType:UIButtonTypeCustom];
            btn.frame=CGRectMake(x, y, 58,58);
            [btn addTarget:self action:@selector(btnClkd:) forControlEvents:UIControlEventTouchUpInside];
            [self.view addSubview:btn];
        }




    -(void)btnClkd:(UIButton*)sender {            

            [self.player1 play];

    }
于 2012-09-25T05:47:47.883 に答える