【发布时间】:2016-03-02 15:13:29
【问题描述】:
大家好,我正在尝试在我的 xcode 游戏中自动启动时快速播放声音,并且我尝试了很多不同的代码。我能够在 Objective-C 中编写和运行它,就像下面在 viewdidload 方法中一样,我为声音本身创建了一个方法并在 viewdidload 中调用它。
-(void)Loadingsound {
AudioServicesPlaySystemSound(Loadingsound);
}
-(void)viewDidLoad {
[super viewDidLoad];
NSURL *LoadingSound = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Tap Sound" ofType:@"wav"]];
AudioServicesCreateSystemSoundID((__bridge CFURLRef)LoadingSound, &Loadingsound);
[self Loadingsound];
但现在我试图快速复制相同的内容,但我无法这样做。我在另一个关于堆栈溢出的问题中看到了下面的这段代码,但由于现在这是在 Xcode 7.2.1 和 Swift 2.0 上,是否有可能有一种新的方法来编写它?这是我尝试过的代码,游戏开始时声音不加载。
override func viewDidLoad() {
super.viewDidLoad()
if let soundURL = NSBundle.mainBundle().URLForResource("Tap Sound", withExtension: "wav") {
var mySound: SystemSoundID = 0
AudioServicesCreateSystemSoundID(soundURL, &mySound)
// Play
AudioServicesPlaySystemSound(mySound);
}
我尝试运行代码的另一种方法是......
覆盖 func viewDidLoad() {
super.viewDidLoad()
var loadingsound = NSURL(fileURLWithPath:
NSBundle.mainBundle().pathForResource("Tap Sound", ofType: "wav"))
var audioPlayer = AVAudioPlayer()
audioPlayer = AVAudioPlayer(contentsOfURL: loadingsound, error: nil)
audioPlayer.prepareToPlay()
audioPlayer.play()
在这个方法中,当我尝试运行它时,编译失败并显示一个错误,告诉我输入一个“!”在输入“wav”并在其后放置支架后签名。在我输入感叹号后,它告诉我替换下面的“错误”一词并输入“filetypeHint”。有人请帮我解决这个问题。原件在objective-c中运行良好,有人可以帮我将确切的代码翻译成swift。我看到的其他示例显示错误。
谢谢!
【问题讨论】: