【发布时间】:2015-04-06 07:34:02
【问题描述】:
我对编程和 swift 都很陌生(请善待!)。我有一个关于如何生成随机图像的工作示例(通过分配一个数字并使用 Int(arc4random_uniform(x))。但是我不知道如果显示此图像,我该怎么说,然后将此声音分配给按钮。每次显示图像时,都会有与之匹配的声音。以我有限的经验,我只能想到做冗长的 if 语句?
【问题讨论】:
-
写一个冗长的 if 语句。将其添加到您的问题中。
我对编程和 swift 都很陌生(请善待!)。我有一个关于如何生成随机图像的工作示例(通过分配一个数字并使用 Int(arc4random_uniform(x))。但是我不知道如果显示此图像,我该怎么说,然后将此声音分配给按钮。每次显示图像时,都会有与之匹配的声音。以我有限的经验,我只能想到做冗长的 if 语句?
【问题讨论】:
回答
将图像的名称传递给NSMutableString,不带扩展名(.png,或者只删除扩展名。)。然后(希望音频文件与图像名称相同)您现在可以从mutableString 调用音频文件。
说明
例如。如果您有一个名为Dog.png 的图像。将与狗图像一起使用的音频文件命名为:dog.mp3。 (.mp3 是一个例子)。当用户选择dog 图像时,将名称传递给muatableString。让我们调用mutableString 名称selectedImage。
现在,selectedImage 的值应该是 .png。 (或任何你有的扩展名。)删除selectedImage 的最后三个字母,如this:
func deleteCharactersInRange(_ aRange: NSRange)
接下来您要使用selectedImage 调用音频文件,并添加扩展名,如this:
func appendString(_ aString: String)
所以selectedImage 的值现在应该是:dog.mp3。您现在可以使用selectedImgae 调用音频文件。
希望这会有所帮助!
编辑
这是播放音频文件的代码:
var player : AVAudioPlayer! = nil // 将是可选的,必须提供初始化程序
let path = NSBundle.mainBundle().pathForResource("audioFile", ofType:"m4a")
let fileURL = NSURL(fileURLWithPath: path)
player = AVAudioPlayer(contentsOfURL: fileURL, error: nil)
player.prepareToPlay()
player.delegate = self
player.play()
【讨论】: