1
ユーザーが再生/一時停止、前方へのスキップ、後方へのスキップが可能なサウンドのバンクから4つのアイテムのランダムプレイリストを作成しようとしています。Swift 2.2:AVAudioPlayerのランダムプレイリストを作成する
私は、スウィフトとオブジェクト指向プログラミングの両方に新しい(ごめんなさい!)。現在Xcode 7.3.1を使用しています。
マイコード:
class ViewController: UIViewController {
var E1Audio: AVPlayerItem?
var E2Audio: AVPlayerItem?
var E3Audio: AVPlayerItem?
var E4Audio: AVPlayerItem?
var E5Audio: AVPlayerItem?
var E6Audio: AVPlayerItem?
struct playlist {
var initialitems: [AVPlayerItem] = []
var shuffleditems: [AVPlayerItem] {
initialitems.shuffle
}
var instanceplaylist: [AVPlayerItem]{
shuffleditems[0...3]
}
}
var EnvPlaylist: [AVPlayerItem] = playlist(initialitems: [E1Audio, E2Audio, E3Audio, E4Audio, E5Audio, E6Audio])
let EnvPlayer = AVPlayer()
var currentTrack = 0
@IBAction func envPreviousTrack() {
if currentTrack-1 < 0 {
currentTrack = (EnvPlaylist.count - 1) < 0 ? 0 : (EnvPlaylist.count - 1)
} else {
currentTrack-1
}
}
@IBAction func envNextTrack() {
if currentTrack+1 > EnvPlaylist.count {
currentTrack = 0
} else {
currentTrack+1;
}
}
@IBAction func envPlayTrack() {
if EnvPlaylist.count > 0 {
EnvPlayer.replaceCurrentItemWithPlayerItem(InstancePlaylist2[currentTrack])
EnvPlayer.play()
override func viewDidLoad() {
super.viewDidLoad()
let E1Audio = AVPlayerItem.init(URL: NSBundle.mainBundle().URLForResource("E1Audio", withExtension: "wav")!)
let E2Audio = AVPlayerItem.init(URL: NSBundle.mainBundle().URLForResource("E2Audio", withExtension: "wav")!)
let E3Audio = AVPlayerItem.init(URL: NSBundle.mainBundle().URLForResource("E3Audio", withExtension: "wav")!)
let E4Audio = AVPlayerItem.init(URL: NSBundle.mainBundle().URLForResource("E4Audio", withExtension: "wav")!)
let E5Audio = AVPlayerItem.init(URL: NSBundle.mainBundle().URLForResource("E5Audio", withExtension: "wav")!)
let E6Audio = AVPlayerItem.init(URL: NSBundle.mainBundle().URLForResource("E6Audio", withExtension: "wav")!)
}
}
}
これはエラー与える:インスタンスメンバー 'E1Audio' タイプ 'のViewController' で使用することはできませんが。
EnvPlaylistの宣言をviewDidLoad()に移動すると、クラスレベルで関数envPreviousTrack()、envNextTrack()、およびenvPlayTrack()を定義してUIボタンにリンクすることができません。
どうすればこの問題を回避できますか?前もって感謝します。申し訳ありませんが、それはばかな質問です。
ありがとうございました。変更を反映するために質問を更新しました。まだXcodeで同じエラーが発生していますか? –
@OliverMcCallion viewDidLoadメソッドで、let before E1Audioを削除します。変数を再作成する必要はありません。 – penatheboss