为什么在播放音频时出现“AudioQueueInternalNotifyRunning 中捕获的异常 - 错误 -66671”?

时间:2021-02-06 14:46:51

标签: ios swift xcode

我有三个不同的 AVAudio 实例。尝试播放“audioPlayer3”声音时出现异常。有人可以帮我看看吗?”单击“playAgain”按钮时也是如此 按钮播放“audioPlayer3”,我不知道为什么。 “audioPlayer”和audioPlayer2 工作得很好。问题仅在于“audioPlayer3”。

import AVFoundation
import SpriteKit
import GameplayKit
import GameKit

class EggCatchScene: SKScene {
    var mainMenuButton = SKSpriteNode(imageNamed: "mainmenuButton2")
    var isfacingRight = true;
    var isfacingLeft = false
    var audioPlayer3 : AVAudioPlayer!
    var audioPlayer = AVAudioPlayer()
    var audioPlayer2 = AVAudioPlayer()
    var submitButton = SKSpriteNode(imageNamed: "submitButton.png")
    var scoresubmitAlert = SKSpriteNode(imageNamed: "scoresubmittedAlert.png")
    var playagainButton2 = SKSpriteNode(imageNamed: "playagainButton")
    var levelLabel: SKLabelNode!
    var scoreLabel: SKLabelNode!
    var gameoverscoreLabel: SKLabelNode!
    var birdSprite = SKSpriteNode(imageNamed: "birdAnimation1.png")
    var playagainButton = SKSpriteNode(imageNamed: "playagainButton")
    var gameoverScreen = SKSpriteNode(imageNamed: "gameoverScreen")
    var leftbuttonisPressed = false
    var rightbuttonisPressed = false
    var score = 0
    private var bear = SKSpriteNode()
    private var bearWalkingFrames: [SKTexture] = []
    var rightButton = SKSpriteNode(imageNamed: "rightButton")
    var eggcatchBackground = SKSpriteNode(imageNamed: "eggcatchBackground")
    var leftButton = SKSpriteNode(imageNamed: "leftButton")
    var eggcatchGround = SKSpriteNode(imageNamed: "eggcatchGround2")
    var flyButton = SKSpriteNode(imageNamed: "upButton")
    var eggSprite = SKSpriteNode(imageNamed: "eggSprite")
    var number = Int.random(in: 20..<620)
    
    override func didMove(to view: SKView) {
        let sound = Bundle.main.path(forResource: "bgMusic.mp3", ofType: nil)!
               let url = URL(fileURLWithPath: sound)
               
               do{
                   audioPlayer2 = try AVAudioPlayer(contentsOf: url)
                   audioPlayer2.play()
                       audioPlayer2.numberOfLoops = 1
               } catch {
                   print(error)
               }
        
        let atlas = SKTextureAtlas(named: "BirdAnimation")
        let m1 = atlas.textureNamed("birdAnimation1.png")
        let m2 = atlas.textureNamed("birdAnimation2.png")
        let m3 = atlas.textureNamed("birdAnimation3.png")
        let m4 = atlas.textureNamed("birdAnimation4.png")
        let m5 = atlas.textureNamed("birdAnimation5.png")
        
        let textures = [m1, m2, m3, m4, m5]
        let meleeAnimation = SKAction.animate(with: textures, timePerFrame: 0.07)
        birdSprite.run(SKAction.repeatForever(meleeAnimation))
        birdSprite.position = CGPoint(x: frame.midX, y: frame.midY)
        birdSprite.zPosition = 2
        birdSprite.setScale(1)
        self.addChild(birdSprite)
        
        eggcatchBackground.position = CGPoint(x: frame.midX, y: frame.midY)
        eggcatchBackground.zPosition = 0
        eggcatchBackground.size.height = self.size.height
        eggcatchBackground.size.width = self.size.width
        self.addChild(eggcatchBackground)
        
        mainMenuButton.isHidden = true
        mainMenuButton.position = CGPoint(x: frame.midX, y: frame.midY - 260)
        mainMenuButton.zPosition = 5
        mainMenuButton.setScale(0.5)
        self.addChild(mainMenuButton)
        
        submitButton.isHidden = true
        submitButton.position = CGPoint(x: frame.midX, y: frame.midY - 75)
        submitButton.zPosition = 5
        submitButton.setScale(0.5)
        self.addChild(submitButton)
        
        gameoverScreen.isHidden = true
        gameoverScreen.position = CGPoint(x: frame.midX, y: frame.midY)
        gameoverScreen.zPosition = 5
        gameoverScreen.setScale(0.5)
        self.addChild(gameoverScreen)
        
        eggSprite.position = CGPoint(x: frame.midX, y: self.size.height)
        eggSprite.zPosition = 2
        eggSprite.setScale(0.2)
        self.addChild(eggSprite)
        
        eggcatchGround.position = CGPoint(x: frame.midX, y: 25)
        eggcatchGround.zPosition = 2
        eggcatchGround.size.width = self.size.width
        self.addChild(eggcatchGround)
        
        scoresubmitAlert.isHidden = true
        scoresubmitAlert.position = CGPoint(x: frame.midX, y:frame.midY + 65)
        scoresubmitAlert.zPosition = 3
        scoresubmitAlert.setScale(0.7)
        self.addChild(scoresubmitAlert)
        
        flyButton.position = CGPoint(x: 550, y:150 )
        flyButton.zPosition = 3
        flyButton.setScale(0.2)
        self.addChild(flyButton)
        
        playagainButton.isHidden = true
        playagainButton.position = CGPoint(x: frame.midX, y:frame.midY )
        playagainButton.zPosition = 3
        playagainButton.setScale(0.5)
        self.addChild(playagainButton)
        
        playagainButton2.isHidden = true
        playagainButton2.position = CGPoint(x: frame.midX, y:frame.midY - 320 )
        playagainButton2.zPosition = 3
        playagainButton2.setScale(0.5)
        self.addChild(playagainButton2)
        
        rightButton.position = CGPoint(x: 240, y:150 )
        rightButton.zPosition = 3
        rightButton.setScale(0.2)
        self.addChild(rightButton)
        
        leftButton.position = CGPoint(x: 85, y:150 )
        leftButton.zPosition = 3
        leftButton.setScale(0.2)
        self.addChild(leftButton)
        
        scoreLabel = SKLabelNode(fontNamed: "Chalkduster")
        scoreLabel.zPosition = 2
        scoreLabel.fontColor = UIColor.red
        scoreLabel.position = CGPoint(x: 100, y: 800)
        addChild(scoreLabel)
        
        levelLabel = SKLabelNode(fontNamed: "Chalkduster")
        levelLabel.zPosition = 2
        levelLabel.fontColor = UIColor.red
        levelLabel.position = CGPoint(x: 550, y: 800)
        addChild(levelLabel)
        
        
       
        
    }
    
    
    func checkforCollision(){
    
    if(eggSprite.frame.intersects(eggcatchGround.frame)) || (birdSprite.frame.intersects(eggcatchGround.frame)){
        
        let sound = Bundle.main.path(forResource: "gameoverSound.wav", ofType: nil)!
               let url = URL(fileURLWithPath: sound)
               
               do{
                    audioPlayer3 = try AVAudioPlayer(contentsOf: url)
                    audioPlayer3.play()
                    audioPlayer3.numberOfLoops = 0
               } catch {
                   print(error)
               }
        
        eggSprite.position.y = 960
        submitButton.isHidden = false
        playagainButton.isHidden = false
        self.birdSprite.removeFromParent()
        self.eggSprite.removeFromParent()
        self.rightButton.removeFromParent()
        self.leftButton.removeFromParent()
        self.flyButton.removeFromParent()
        print("Game Over")
        
    }
}
    
    
    
    
    override func update(_ currentTime: TimeInterval){
        birdSprite.position.y -= 1
        checkforCollision()
        scoreLabel.text = "Score: \(score)"
        
        
        
        if(rightbuttonisPressed == true){
            birdSprite.xScale = 1;
            birdSprite.position.x += 10
        }
        
        if(leftbuttonisPressed == true){
            
            birdSprite.position.x -= 10
            birdSprite.xScale = -1;

        }
        
        if (score <= 10){
            levelLabel.text = "Level 1"
            eggSprite.position.y -= 1

        }
        
        if (score >= 10){
            levelLabel.text = "Level 2"
            eggSprite.position.y -= 1.1

        }
        
        if (score >= 20){
            levelLabel.text = "Level 3"
            eggSprite.position.y -= 1.2

        }
        
        if (score >= 30){
            levelLabel.text = "Level 4"
            eggSprite.position.y -= 1.3

        }
        
        if (score >= 40){
            levelLabel.text = "Level 5"
            eggSprite.position.y -= 1.4

        }
        
        if (score >= 60){
            levelLabel.text = "Level 6"
            eggSprite.position.y -= 1.5

        }
        
        if (score >= 70){
            levelLabel.text = "Level 7"
            eggSprite.position.y -= 1.6
            
        }
        
        if (score >= 80){
            levelLabel.text = "Level 8"
            eggSprite.position.y -= 1.7
            
        }
        
        if (score >= 90){
            levelLabel.text = "Level 9"
            eggSprite.position.y -= 1.8
            
        }
        
        if (score >= 100){
            levelLabel.text = "Level 10"
            eggSprite.position.y -= 1.9
            
        }
        
        if (score >= 110){
            levelLabel.text = "Level 11"
            eggSprite.position.y -= 2
            
        }
        
        if (score >= 120){
            levelLabel.text = "Level 12"
            eggSprite.position.y -= 2.1
            
        }
        
        if (score >= 130){
            levelLabel.text = "Level 13"
            eggSprite.position.y -= 2.2
            
        }
        
        if (score >= 140){
            levelLabel.text = "Level 14"
            eggSprite.position.y -= 2.3
            
        }
        
        if (score >= 150){
            levelLabel.text = "Max"
            eggSprite.position.y -= 2.4
        
        
       
        }
        
        
      /*  if(birdSprite.frame.intersects(eggcatchGround.frame)){
           // gameoverScreen.isHidden = false
            let sound = Bundle.main.path(forResource: "gameoverSound", ofType: "mp3")!
                    let url = URL(fileURLWithPath: sound)
             
                    do{
                      audioPlayer = try AVAudioPlayer(contentsOf: url)
                        audioPlayer.play()
                        audioPlayer.numberOfLoops = 0
                    } catch {
                       print(error)
                    }
            
            
           
            submitButton.isHidden = false
            playagainButton.isHidden = false
            self.birdSprite.removeFromParent()
            self.eggSprite.removeFromParent()
            self.rightButton.removeFromParent()
            self.leftButton.removeFromParent()
            self.flyButton.removeFromParent()
            
            print("Game Over")
        }*/
        
       
        
        let xRange = SKRange(lowerLimit:0,upperLimit:size.width)
        let yRange = SKRange(lowerLimit:0,upperLimit:size.height)
        //sprite.constraints = [SKConstraint.positionX(xRange,Y:yRange)] // iOS 9
        birdSprite.constraints = [SKConstraint.positionX(xRange,y:yRange)]  // iOS 10
    
        
        if(eggSprite.frame.intersects(birdSprite.frame)){
            let sound = Bundle.main.path(forResource: "itemGet.wav", ofType: nil)!
                   let url = URL(fileURLWithPath: sound)
                   
                   do{
                       audioPlayer = try AVAudioPlayer(contentsOf: url)
                       audioPlayer.play()
                           audioPlayer.numberOfLoops = 0
                   } catch {
                       print(error)
                   }
            eggSprite.position.y = self.size.height
            //eggSprite.position.x = number
            score += 1
        }
        
       
    }
    /*func startTimer()
    {
        countdownTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(decrementCounter), userInfo: nil, repeats: true)
    }*/
    
    func decrementTimer(){
        
    }
    
    
    
    
   
    
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        
        for touch in touches {
            let location = touch.location(in: self)
            
            if submitButton.frame.contains(location) {
                //submitButton.isHidden = true
                submitButton.removeFromParent()
                mainMenuButton.isHidden = false
                playagainButton.removeFromParent()
                playagainButton2.isHidden = false
                scoresubmitAlert.isHidden = false
                let score1 = GKScore(leaderboardIdentifier: "birdmemoirsleaderboard")
                score1.value = Int64(score)
                GKScore.report([score1]) { error in
                    guard error == nil else {
                        print(error?.localizedDescription ?? "")
                        return
                    }
                    
                    print("done")
                }
                print("clicked")
               
                
            }
            
            if playagainButton.frame.contains(location) {
                if let eggcatchScene = EggCatchScene(fileNamed: "EggCatchScene") {
                    let eggcatchScene = EggCatchScene(size: CGSize(width:640, height: 960))

                    self.view?.presentScene(eggcatchScene, transition: SKTransition.fade(withDuration: 1))

                }
            }
            
            if playagainButton2.frame.contains(location) {
                if let eggcatchScene = EggCatchScene(fileNamed: "EggCatchScene") {
                    let eggcatchScene = EggCatchScene(size: CGSize(width:640, height: 960))

                    self.view?.presentScene(eggcatchScene, transition: SKTransition.fade(withDuration: 1))

                }
            }
            
            if mainMenuButton.frame.contains(location) {
                if let mainmenuScene = GameScene2(fileNamed: "GameScene2") {
                    let mainmenuScene = GameScene2(size: CGSize(width:640, height: 960))

                    self.view?.presentScene(mainmenuScene, transition: SKTransition.fade(withDuration: 1))

                }
            }
            
            
            if flyButton.frame.contains(location) {
                birdSprite.position.y += 50
            }

            
            if rightButton.frame.contains(location) {
                print("clicked")
                rightbuttonisPressed = true
                //sprite.position.x += 10
                
            }
            
            if leftButton.frame.contains(location) {
                print("clicked")
                leftbuttonisPressed = true
                birdSprite.xScale = -1;            }
        }
    }
        
    override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
        let touch = touches.first!
        if leftButton.contains(touch.location(in: self)) {
            leftbuttonisPressed = false
        }
        if rightButton.contains(touch.location(in: self)) {
            rightbuttonisPressed = false
        }
    }
}```
    
    
    
    
   

0 个答案:

没有答案
相关问题