【发布时间】:2013-04-06 12:11:48
【问题描述】:
我用谷歌搜索了这个问题,但找不到类似的案例。
我使用本教程播放了 testSound.mp3 - 点击 iPad 模拟器上的按钮时的文件: http://mobileorchard.com/easy-audio-playback-with-avaudioplayer/
如果 playSound-Method 在我的 ViewController.m 中,但不在我的 Sound.m 中(它具有相同的方法),它会以这种方式工作(它播放声音)。 代码被执行(NSLog 说:“Sound.m playSound executed”),但根本没有声音。
我真的很感谢这里的一些帮助,我想我完全被卡住了...... :(
最好的问候, - 茶壶
// ViewController.h
#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
#import "Sound.h"
@interface ViewController : UIViewController {
AVAudioPlayer *audioPlayer;
}
- (IBAction)pressButton:(id)sender;
- (void)playSound: (NSString*) soundFile volume : (NSInteger) volume repeats : (NSInteger) repeats;
@end
// ViewController.m
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading thea view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)pressButton:(id)sender {
NSLog (@"Method: pressButton");
[self playSound: @"testSound.mp3" volume: 2 repeats: 2 url : url]; //It works!
Sound *tempSound = [[Sound alloc] init];
[tempSound playSound: @"testSound.mp3" volume: 2 repeats: 2]; // Doesn't work. -> Says "Sound.m playSound executed", but there is no Sound.
}
- (void)playSound: (NSString*) soundFile volume : (NSInteger) volume repeats : (NSInteger) repeats {
NSLog(@"ViewControler playSound");
NSError *error;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
audioPlayer.numberOfLoops = -1;
if (audioPlayer == nil){
NSLog([error description]);
NSLog(@"ViewController.m playSound NOT executed");
}
else{
[audioPlayer play];
NSLog(@"ViewController.m playSound executed");
}
}
@end
// 声音.h
#import <Foundation/Foundation.h>
#import <AVFoundation/AVFoundation.h>
@interface Sound : NSObject {
AVAudioPlayer *audioPlayer;
}
- (void) playSound: (NSString*) soundFile volume : (NSInteger) volume repeats : (NSInteger) repeats;
@end
// 声音.m
#import "Sound.h"
@implementation Sound
- (void)playSound: (NSString*) soundFile volume : (NSInteger) volume repeats : (NSInteger) repeats {
NSLog(@"Sound playSound");
NSError *error;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
audioPlayer.numberOfLoops = -1;
if (audioPlayer == nil){
NSLog([error description]);
NSLog(@"Sound.m playSound NOT executed");
}
else{
[audioPlayer play];
NSLog(@"Sound.m playSound executed");
}
}
@end
【问题讨论】:
-
网址是什么,可以给我看看吗?
-
你到底在干什么?你真的检查过这段代码吗?
-
你好,murali,我已经检查过了,后来重命名了一些东西。 url 输出(通过 absoluteString)有点奇怪,有时它会显示数千个中文字母。不知道该怎么做,但在 Martin R 的回答之后,这似乎不是问题所在。
标签: objective-c xcode audio