React Native 如何在“onPress”之后播放声音?
Posted
技术标签:
【中文标题】React Native 如何在“onPress”之后播放声音?【英文标题】:React Native how to play a sound after an "onPress"? 【发布时间】:2019-04-07 07:37:19 【问题描述】:这是我的一些代码:
<TouchableOpacity
style=styles.button
onPress=this.onPress
>
<Text> Play Sound </Text>
</TouchableOpacity>
我想编写一个函数“onPress”来播放.mp3 声音。 我已经导入了 react-native-sound 并准备好了我的 .mp3 文件,只是不知道调用 onPress 函数后如何播放声音。
【问题讨论】:
文档兄弟,文档! github.com/zmxv/react-native-sound/blob/master/README.md 【参考方案1】:在我看来,如果你想听声音,你可以试试这个。 语法 = 反应。
Import Sound from "react-native-sound";
Sound.setCategory('Playback');
const whoosh = new Sound('whoosh.mp3', Sound.MAIN_BUNDLE, (error) =>
if (error)
console.log('failed to load the sound', error);
return;
;
whoosh.play((success) =>
if (success)
console.log('successfully finished playing');
else
console.log('playback failed due to audio decoding errors');
reset the player to its uninitialized state (android only)
whoosh.reset();
【讨论】:
【参考方案2】:最简单的方法是首先创建一个新实例,例如 Following。 在构造函数中创建 this 以在组件挂载时加载它 注意:请将您的 mp3 或 wav 文件放在 android/app/src/main/res/raw 中
const whoosh = new Sound('swoosh.mp3', Sound.MAIN_BUNDLE);
只需在你的函数中调用它
whoosh.play()
【讨论】:
这与已有的答案有何不同? 这只是一个两行代码兄弟,很容易理解 在我的实验中,声音文件必须引用为./swoosh.mp3
,而不是swoosh.mp3
(注意前面的点和斜线),否则捆绑时会抛出错误(TypeError:无法读取属性DeltaPacher.js:77 中未定义的“concat”)【参考方案3】:
-
Npm install 'react-native-sound' 并链接到您的项目。
从 react-native-sound 导入声音
从“react-native-sound”导入声音;
将您的 mp3 文件放入文件夹并注明路径:
const requireAudio = require('./xyz.mp3');
将此代码放在“onPress”函数中。
const s = new Sound(requireAudio, (e) => 如果(e) console.log('声音错误', e); 返回; s.play(() => s.release()); );
【讨论】:
以上是关于React Native 如何在“onPress”之后播放声音?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 react-native 中的 onPress 按钮上滚动顶部?
React Native:如何更改 onPress 事件的视图
如何通过 React Native 中的视图传递触摸但触发 onPress?
如何让 onPress 在 TextInput 内的 React Native Text 元素上触发?
React Native:onPress:如何切换按钮文本和函数调用?
如何在“react-native-router-flux”中绑定到 onPress 事件的函数中调用 Actions.xxx