背景音乐不起作用,但没有错误?

时间:2015-09-09 06:51:55

标签: xcode swift

请解决我的问题,为什么背景音乐不起作用?这是我的代码,希望有人能解决。

//只是为了格式化..

   @IBOutlet var UsernameTextField: UITextField!
    @IBOutlet var PasswordTextField: UITextField!
    @IBOutlet var EmailTextField: UITextField!
    @IBAction func LogIn(sender: AnyObject) {

    }

    func Login(){
        var user = PFUser()
        user.username = UsernameTextField.text!
        user.password = PasswordTextField.text!

        PFUser.logInWithUsernameInBackground(UsernameTextField.text, password: PasswordTextField.text, block: {
            (User : PFUser?, Error : NSError?) -> Void in

            if Error == nil{
                dispatch_sync(dispatch_get_main_queue()){
                    var Storyboard = UIStoryboard(name: "Main", bundle: nil)
                    var MainVC : UIViewController = Storyboard.instantiateViewControllerWithIdentifier("MainVC") as! UIViewController

                    self.presentViewController(MainVC, animated: true, completion: nil)


                }

            }
            else{


                NSLog("Sorry, you've typed either username or password wrongly.")
            }



        })

    }


    @IBAction func signUpButton(sender: AnyObject) {
        signUp() // Calling signUp function here that is declared below.
    }


    func signUp(){
        // Do sign up stuff.
    }


    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

    playBackgroundMusic("IntroMusic")
        backgroundMusicPlayer.play()

        let soundFilePath = NSBundle.mainBundle().pathForResource("Background", ofType: "mp3")
        let soundFileURL = NSURL(fileURLWithPath: soundFilePath!)
        let player = AVAudioPlayer(contentsOfURL: soundFileURL, error: nil)
        player.numberOfLoops = -1 //infinite
        player.play()

    func signUp(){
        var user = PFUser()
        user.username = UsernameTextField.text!
        user.password = PasswordTextField.text!
        user.email = EmailTextField.text!
    }


    let user = PFUser()
    user.username = "Name:"
    user.password = "Pass:"
    user.email = "Email:"

    user.signUpInBackgroundWithBlock { (success: Bool, error: NSError?) -> Void in
    if error == nil {
       // Hooray! Let them use the app now.
       } else {
       // Examine the error object and inform the user.
       }
    }

}



    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}



var backgroundMusicPlayer: AVAudioPlayer!

func playBackgroundMusic(filename: String) {

    //The location of the file and its type
    let url = NSBundle.mainBundle().URLForResource("Background", withExtension: "mp3")

    //Returns an error if it can't find the file name
    if (url == nil) {
        println("Could not find the file \(filename)")
    }

    var error: NSError? = nil

    //Assigns the actual music to the music player
    backgroundMusicPlayer = AVAudioPlayer(contentsOfURL: url, error: &error)

    //Error if it failed to create the music player
    if backgroundMusicPlayer == nil {
        println("Could not create audio player: \(error!)")
        return
    }

    //A negative means it loops forever
    backgroundMusicPlayer.numberOfLoops = -1
    backgroundMusicPlayer.prepareToPlay()
    backgroundMusicPlayer.play()
}

1 个答案:

答案 0 :(得分:1)

Leo Dabus建议您在player方法之外声明viewDidLoad个实例,并且您的代码将是:

var player : AVAudioPlayer!
override func viewDidLoad() {
    super.viewDidLoad()
    let soundFilePath = NSBundle.mainBundle().pathForResource("Background", ofType: "mp3")
    let soundFileURL = NSURL(fileURLWithPath: soundFilePath!)
    player = AVAudioPlayer(contentsOfURL: soundFileURL, error: nil)
    player.numberOfLoops = -1 //infinite
    player.play()
}