我正在尝试为我的游戏添加背景音乐。我正在使用AVAudioPlayer()
,但我得到的是#34;预期声明"错误。为什么我会收到此错误,如何解决?我查了一下,但它非常广泛,我无法找到确切的问题。我希望我的代码的上下文会有所帮助:
import SpriteKit
import GameplayKit
import AVFoundation
import UIKit
class GameScene: SKScene {
private var label : SKLabelNode?
private var spinnyNode : SKShapeNode?
var ButtonAudioURL = NSURL(fileURLWithPath: Bundle.main.path(forResource: "HomeSoundtrack", ofType: "m4a")!)
var ButtonAudioPlayer = AVAudioPlayer()
ButtonAudioPlayer = AVAudioPlayer(contentsOfURL: ButtonAudioURL, error: nil)
var gameArea: CGRect?
enum gameState {
case preGame
case inGame
case endGame
}
var currentGameState = gameState.preGame
override init(size:CGSize) {
let maxAspectRatio: CGFloat = 16.0/9.0
let playableWidth = size.height / maxAspectRatio
let margin = (size.width - playableWidth) / 2
gameArea = CGRect(x: margin, y:0, width: playableWidth, height: size.height)
super.init(size: size)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func didMove(to view: SKView) {
ButtonAudioPlayer.play()
}
答案 0 :(得分:3)
您需要将这两行结合起来:
var ButtonAudioPlayer = AVAudioPlayer()
ButtonAudioPlayer = AVAudioPlayer(contentsOfURL: ButtonAudioURL, error: nil)
分成一行:
var ButtonAudioPlayer = AVAudioPlayer(contentsOfURL: ButtonAudioURL, error: nil)
但是这仍然行不通,因为你不能拥有两个类属性,其中一个依赖于另一个属性。
现在您需要将该行更改为:
lazy var ButtonAudioPlayer = AVAudioPlayer(contentsOfURL: ButtonAudioURL, error: nil)
但是在Swift中没有AVAudioPlayer的初始化器。你需要它:
lazy var ButtonAudioPlayer = try! AVAudioPlayer(contentsOfURL: ButtonAudioURL)
请注意,如果URL未引用有效的音频文件,则会在运行时崩溃。
此外,Swift中的标准是命名以大写字母开头的类,结构和枚举。变量,函数,案例等都应以小写字母开头。
还要避开Swift中的NSURL
。使用URL
。