1

私はスウィフトとコーディング全般にかなり慣れていません。私は今ゲームを作っていて、バックグラウンドミュージックをいくつか追加しましたが、それはすべて正常に機能しています. 別のビューに切り替えるときに音楽を連続して再生する方法も見つけましたが、ゲームにバックグラウンドミュージックの再生を開始するように指示した「メインメニュー」ビューに戻るたびに、最初からやり直します。私がやりたいことは、ユーザーがアプリを起動したときに再生を開始し、ユーザーがアプリを閉じるまでループし続けることです。このコードを使用して、バックグラウンド ミュージックを開始しました。

var backgroundMusicPlayer: AVAudioPlayer!

func playBackgroundMusic(filename: String) { let url = NSBundle.mainBundle().URLForResource( filename, withExtension: nil) if (url == nil) { println("ファイルが見つかりませんでした: (filename)") return }

var error: NSError? = nil
backgroundMusicPlayer =
    AVAudioPlayer(contentsOfURL: url, error: &error)
if backgroundMusicPlayer == nil {
    println("Could not create audio player: \(error!)")
    return
}

backgroundMusicPlayer.numberOfLoops = -1
backgroundMusicPlayer.prepareToPlay()
backgroundMusicPlayer.play()

}

そして、このコードを Home View Controller に入れました (これは、アプリを開いたときに最初に表示される画面です)。

var player = AVAudioPlayer()

if  player.playing {
    player.play()
} else {
    playBackgroundMusic("BackgroundMusic.m4a")
}

今、私はこれを考えました:音楽が再生されている場合は再生を続け、そうでない場合は再び音楽の再生を開始します。しかし今、私が来たビューで音楽が再生されていたとしても、音楽の再生が再び開始されます。ちなみに、他の 2 つのビューでこのコードを使用して、音楽を継続的に再生したところ、正常に動作しました。

func resumeBackgroundMusic() {
   if let player = backgroundMusicPlayer {
       if !player.playing {
           player.play()
       }
   }

}

4

1 に答える 1

2

AppDelegate から音楽を開始および停止できます... 最良の方法は、MusicPlayer クラスを作成し、それを AppDelegate でインスタンス化し、その中で開始および停止メソッドを呼び出すことです...

あなたはそのようなことを書くのに十分な経験を持っていますか?

それとも手伝うべきですか?

于 2014-12-23T20:54:37.063 に答える