2015-02-18 2 views
0

Я пишу приложение для рассказчика для своей племянницы, и у меня есть вопрос о SpriteKit. Я пытаюсь настроить его так, чтобы в нем играли разные типы аудио.Как прекратить воспроизведение звукового эффекта с помощью SpriteKit и Swift?

  1. Фоновая музыка петли (AVFoundation)
  2. Повествование, который играет, когда на новой странице, или при нажатии на кнопку повествуют переигрывать повествованием (SKAction)

Моя проблема заключается в том, что повествование будет отображаться поверх друг друга, если пользователь изменяет страницу или пользователь воспроизводит кнопку повторного воспроизведения. Таким образом, это заканчивается тем, что два человека разговаривают друг с другом.

Как я могу остановить все повествования, которые играют, когда запускается новое повествование?

Я не могу найти подходящую помощь в Интернете. Я видел, что некоторые сообщения говорят нам об AVFoundation, но из моего понимания (хотя и ограниченного), который больше подходит для фоновой музыки и может иметь только один трек.

Я неверно истолковал документацию? Может кто-нибудь помочь мне ответить на эту проблему?

import SpriteKit 

импорт AVFoundation

класс Page1: SKScene {

// MARK: Touch handling 

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) { 
    /* Called when a touch begins */ 

    for touch: AnyObject in touches { 
     let location = touch.locationInNode(self) 
     println("\(location)") 

     //checks if someone touched the menu button 
     if menuButton.containsPoint(location) { 
      println("Play story with sound!") 
      settings.setInProgress() 
      goToPauseMenu() 
     } 

     if soundButton.containsPoint(location) { 
      println("Play story with sound!") 
      settings.setInProgress() 
      runAction(playNar) 
     } 

     //checks if someone touched the forward button 
     if pageForward.containsPoint(location) { 
      println("Next Page!") 
      settings.setInProgress() 
      nextPage() 
     } 

    } 
} 

ответ

1

Ваши показания предполагающие использование AVFoundation хорошие советы. Однако я бы не характеризовал AVFoundation как только для фоновой музыки.

Да, вы можете воспроизводить только один поток одновременно с экземпляром AVAudioPlayer, но вы можете иметь несколько экземпляров AVAudioPlayers, играющих разные (или одинаковые) потоки, все перекрывающиеся, если вам это нужно. Звуковые действия SpritKit относительно элементов управления AVFoundation настолько ограничены, что они практически бесполезны для всех, кроме самых основных требований.

Я нашел себя в начале проекта, использующего SKActions для звуков, но неизбежно мне нужен более тонкий контроль над моим звуком (например, управление громкостью, остановка воспроизведения в середине и т. Д.) И в конечном итоге использование AVAudioPlayer.

+0

Да SKAction предназначен, например, из документации «Воспроизведение простых звуков». Например, pew pew pew идет лазером-бластером. Вы хотите использовать AVFoundation для фактического управления. –

+0

HI PixelCloudSt. Вы абсолютно правы! Я вроде как новичок в этом, поэтому я думал, что мы могли бы получить только один экземпляр. Наверное, я пропустил определение экземпляра ... Во всяком случае, ваш совет на месте. и я понял свою ошибку. Большое спасибо за помощь в ответе на мой вопрос. – user3136022

0

Если вы хотите, чтобы остановить звуковые эффекты с помощью набора спрайтов действий, то, что вам нужно сделать, это добавить дочерний узел основного узла, есть дочерний узел воспроизведение аудио звука, затем приостановите самого дочерний узел

Смежные вопросы