在 AVAudioPlayer / Swift 中为音频文件设置一个变量
Set a variable for the audiofile in AVAudioPlayer / Swift
我有一个 AVAudioPlayer,我想用变量 « circuit » 播放一首歌曲。变量将有一首歌曲的名称,保存在应用程序的根目录中。
class MonumentViewController: UIViewController {
var circuit:String!
var BackgroundAudio = AVAudioPlayer(contentsOfURL:NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("dguetta", ofType: "mp3")!), error: nil)
我尝试了下面的这段代码,但收到以下错误消息:'MonumentViewController.Type'does not have a member named 'circuit'
var BackgroundAudio = AVAudioPlayer(contentsOfURL:NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(circuit, ofType: "mp3")!), error: nil)
任何帮助将不胜感激
编辑:
我已经处理过一个 struct ()
struct MyVariables {
static var pisteaudio = "dguetta"
static var BackgroundAudio = AVAudioPlayer(contentsOfURL:NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(pisteaudio, ofType: "mp3")!), error: nil)
}
然后我为变量添加 "MyVariables."。
您不能以这种方式初始化依赖于另一个 属性 的实例 属性,尤其是当 self 尚未创建时。
你的 BackgroundAudio
依赖于 circuit
变量,你用它创建了一个 AVAudioPlayer
的实例,它本身还没有初始化。
相反,这里是一个示例,说明如何创建 AVAudioPlayer
然后将其设置为播放您的声音文件:
class MonumentViewController: UIViewController
{
var circuit : String!
var BackgroundAudio = AVAudioPlayer()
override func viewDidLoad()
{
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
prepareAudioPlayer()
}
func prepareAudioPlayer()
{
circuit = "chopin-tristesse-in-e-major"
//it is of good practice to always make use of error, instead of passing nil to the parameter
var error : NSError?
if let BackgroundAudio = AVAudioPlayer(contentsOfURL:NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(circuit, ofType: "mp3")!), error:&error)
{
if(error != nil)
{
print("Error has occurred")
}
else
{
BackgroundAudio.prepareToPlay()
BackgroundAudio.play()
}
}
}
}
作为旁注,请以小写字母命名您的变量并应用驼峰式大小写约定:
即
var thisIsMyString : String!
var backgroundAudioPlayer = AVAudioPlayer()
希望对您有所帮助。
我有一个 AVAudioPlayer,我想用变量 « circuit » 播放一首歌曲。变量将有一首歌曲的名称,保存在应用程序的根目录中。
class MonumentViewController: UIViewController {
var circuit:String!
var BackgroundAudio = AVAudioPlayer(contentsOfURL:NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("dguetta", ofType: "mp3")!), error: nil)
我尝试了下面的这段代码,但收到以下错误消息:'MonumentViewController.Type'does not have a member named 'circuit'
var BackgroundAudio = AVAudioPlayer(contentsOfURL:NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(circuit, ofType: "mp3")!), error: nil)
任何帮助将不胜感激
编辑:
我已经处理过一个 struct ()
struct MyVariables {
static var pisteaudio = "dguetta"
static var BackgroundAudio = AVAudioPlayer(contentsOfURL:NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(pisteaudio, ofType: "mp3")!), error: nil)
}
然后我为变量添加 "MyVariables."。
您不能以这种方式初始化依赖于另一个 属性 的实例 属性,尤其是当 self 尚未创建时。
你的 BackgroundAudio
依赖于 circuit
变量,你用它创建了一个 AVAudioPlayer
的实例,它本身还没有初始化。
相反,这里是一个示例,说明如何创建 AVAudioPlayer
然后将其设置为播放您的声音文件:
class MonumentViewController: UIViewController
{
var circuit : String!
var BackgroundAudio = AVAudioPlayer()
override func viewDidLoad()
{
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
prepareAudioPlayer()
}
func prepareAudioPlayer()
{
circuit = "chopin-tristesse-in-e-major"
//it is of good practice to always make use of error, instead of passing nil to the parameter
var error : NSError?
if let BackgroundAudio = AVAudioPlayer(contentsOfURL:NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(circuit, ofType: "mp3")!), error:&error)
{
if(error != nil)
{
print("Error has occurred")
}
else
{
BackgroundAudio.prepareToPlay()
BackgroundAudio.play()
}
}
}
}
作为旁注,请以小写字母命名您的变量并应用驼峰式大小写约定:
即
var thisIsMyString : String!
var backgroundAudioPlayer = AVAudioPlayer()
希望对您有所帮助。