2016-04-21 4 views
1

Ich habe versucht herauszufinden, wie man einen Sound deaktiviert. Ich habe versucht, eine removeAtionWithKey mit einer Sound-Aktion zu befestigen, und es scheint gut zu funktionieren, aber der Sound hört nicht auf zu spielen. Ist das, weil ich Action in SpriteKit verwende?So deaktivieren Sie das Abspielen eines Sounds

Wenn dieses Problem hier gelöst wird, anstatt AVFoundation zu importieren, könnten Sie mir dann einige Beispiele geben, um zu verhindern, dass ein Sound abgespielt wird? Oder, wenn der Import AVFoundation in diesem Fall bevorzugt ist, könnten Sie mir auch etwas Code zur Verfügung stellen.

Antwort

1

Hier ist ein Beispiel für die Verwendung von AVFoundation.

import Foundation 
import AVFoundation 

var backgroundMusicPlayer: AVAudioPlayer! 

func playBackgroundMusic(filename: String) { 

    let url = NSBundle.mainBundle().URLForResource(filename, withExtension: "mp3") 

    if (url == nil) { 
     print("Could not find the file \(filename)") 
    } 

    do { backgroundMusicPlayer = try AVAudioPlayer(contentsOfURL: url!, fileTypeHint: nil) } catch let error as NSError { print(error.debugDescription)} 

    if backgroundMusicPlayer == nil { 
     print("Could not create audio player") 
    } 

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

var Sound: AVAudioPlayer! 

func playSound(filename: String) { 

    let url = NSBundle.mainBundle().URLForResource(filename, withExtension: "wav") 

    if (url == nil) { 
     print("Could not find the file \(filename)") 
    } 

    do { Sound = try AVAudioPlayer(contentsOfURL: url!, fileTypeHint: nil) } catch let error as NSError { print(error.debugDescription)} 

    if Sound == nil { 
     print("Could not create audio player") 
    } 

    Sound.prepareToPlay() 
    Sound.play() 
} 

Und hier ist, was Sie (wenn ich gut verstanden) erreichen wollen:

@IBAction func MusicButton(sender: UIButton) { 
    if backgroundMusicPlayer.playing { 
     backgroundMusicPlayer.stop() 
    } 
    else { 
     playBackgroundMusic("SomeMusicName") 
    } 
} 

Stoppen der Musik mit AVFoundation ist so einfach wie .stop() ^^!

+0

Vielen Dank !! aber dieser Code funktioniert nicht gut in meinem Quellcode. In der GameStartScene Datei stelle ich den Sound ein. Nach dem Übergang in die GameScene-Datei und der Bildschirm berührt, möchte ich den Sound verwerfen. Also, was ich in meinem GameScene ausprobiert habe, war das innerhalb von GameStartScene, 'var Sound: AVFoudation'. In GameScene, 'var gameStartScene: GameStartScene!' Innerhalb der Berührung begann gameStartScene.Sound.stop(). Es sah gut aus, aber Code scheint meine Bemühungen nicht zu akzeptieren ..... Warum ist das ein Fehler ??? Ich weiß nicht, wie ich damit umgehen soll. Es ist sehr hilfreich, wenn Sie eine Idee zu dieser Lösung haben könnten. – bagels

+0

Oh, jetzt habe ich es. Arbeitete genau so, wie ich es wollte! Vielen Dank !!! – bagels

+0

Happy Ich könnte helfen: D Ich habe deine Frage upvoted;) – Coder1000