Я пытаюсь воспроизвести звук, когда props.sound == true, и остановиться, когда props.sound = false. Я продолжаю получать необработанные ошибки отклонения обещаний и объект error undefined. Вот мой код:

constructor(props)
    {super(props);
      this.soundObject = new Expo.Audio.Sound();
    }

  stopSound = async () => {
    await this.soundObject.stopAsync();
  }
  playSound = async () => {
    try{
      await this.soundObject.playAsync();
    }catch(error){
      this.createSound()
      await this.soundObject.playAsync();
    }
    }

  componentWillMount(){
    this.createSound();
  }

  componentWillUnmount(){
    this.stopSound();
  }


  createSound = async() => {
    try {
      await this.soundObject.loadAsync(require('soundpath'));
      await this.soundObject.setVolumeAsync(0.3)
      await this.soundObject.setIsLoopingAsync(true)
    } catch (error) {
      console.log("sound couldn't load")
    }
  }

  componentDidMount(){
    if (this.props.sound==true){
      this.playSound();
    } else {
      this.stopSound();
    }
  }

Я пробовал использовать реквизиты, состояние и т. Д., Но он работает только в том случае, если я помещаю playAsync в исходную функцию, т.е.

createSound = async() => {
    try {
      soundObject = new Expo.Audio.Sound();
      await soundObject.loadAsync(require('soundpath'));
      await soundObject.setVolumeAsync(0.3)
      await soundObject.setIsLoopingAsync(true)
      await soundObject.playAsync()
    } catch (error) {
      console.log("sound couldn't load")
    }
  }
1
Billy Bromell 12 Ноя 2018 в 15:10

1 ответ

Лучший ответ

Ошибка проста, используйте require ('soundpath.mp3) // расширение звука.

0
Vigoss fridge 13 Янв 2019 в 09:10