- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在获取一堆音轨,每个音轨都有一个播放每个音轨的按钮。我可以单击它们以播放,然后再次单击以暂停音频,但是如果我尝试播放新音频而不暂停当前正在播放的音频,则除非我双击,否则它不会播放,因为isPlaying状态将设置为false(这是我切换播放/暂停的方式)。
我希望能够在isPlaying为true时单击一个新音频,并且不希望将该状态更改为false(但是如果我单击同一按钮两次,则仍然可以暂停当前音频)。谢谢!
const App = () => {
const [tracks, setTracks] = React.useState(null);
const [currentSong, setCurrentSong] = useState(null);
const [currentId, setCurrentId] = useState(null);
const [isPlaying, setIsPlaying] = useState(false);
const audio = useRef();
// toggle function for toggling whether audio is played or paused
const togglePlay = () => {
setIsPlaying(!isPlaying);
};
// onClick function for handling currentSong and isPlaying state
const handleClickPlay = (track) => {
setCurrentSong(track);
setCurrentId(track.id);
setIsPlaying(true);
if (isPlaying) {
togglePlay();
}
};
React.useEffect(() => {
if (currentSong) {
if (isPlaying) {
audio.current.play();
} else {
audio.current.pause();
}
}
}, [currentSong, isPlaying]);
React.useEffect(() => {
if (isPlaying) {
if (setCurrentSong) {
setIsPlaying(true);
}
}
}, []);
React.useEffect(() => {
fetch("/album.json")
.then((response) => response.json())
.then((data) => {
const tracks = Object.values(data.entities.tracks);
setTracks(tracks);
});
}, []);
if (!tracks) {
return <div>Loading...</div>;
}
console.log(currentSong);
console.log(currentId);
console.log(isPlaying);
return (
<div>
{currentSong && (
<audio src={currentSong.stems.full.lqMp3Url} ref={audio}></audio>
)}
<table>
<tbody>
{tracks.map((track) => (
<TrackRow
track={track}
handleClickPlay={handleClickPlay}
isPlaying={isPlaying}
id={currentId}
currentSong={currentSong}
trackMatchId={() => currentSong === currentId}
/>
))}
</tbody>
</table>
</div>
);
};
export default App;
const TrackRow = ({
track,
handleClickPlay,
currentSong,
isPlaying,
id,
trackMatchId,
}) => {
const handleClick = () => handleClickPlay(track);
return (
<tr>
<button onClick={handleClick}>{isPlaying ? "pause" : "play"}</button>
<td>{track.title}</td>
</tr>
);
};
export default TrackRow;
最佳答案
您可以尝试以下方法:
const handleClickPlay = (track) => {
setCurrentSong(track);
setCurrentId(track.id);
if (track.id === currentId) togglePlay();
else setIsPlaying(true);
};
关于javascript - 将音频isPlaying状态设置为当前音频唯一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64249375/
我有一个 tableview 并且在 tableView 中有多个单元格。 每个单元格都有一个 AVAudioPlayer 我遇到了一个问题。 我不知道如何管理 AVAudioPlayer。 当我播放
我的目标是在视频播放期间播放重复动画,因为我使用的是 VideoView 我想我不妨利用 .isPlaying 方法来解决这个问题 但是 while 循环根本不执行 Floater0 = (I
我在 AVAudioPlayer 类中遇到了一个奇怪的问题。每次我尝试访问它的属性之一时,它们都是空的。 // Get the file path to the song to play. NSSt
使用scene.isPaused和sceneView.isPlaying有什么区别?这些只是从不同地方处理的相同事情吗?是否将其中一个更改为 true,将其他更改为 false,反之亦然? 最佳答案
我正在为 AVAudioPlayer 使用单例,效果很好。 我希望在初始化播放器之前添加一个检查,如果播放器已经在播放,则停止播放器。 我添加了这段代码: SoundPlayer *player =
在 Android 上,我在尝试确定实际播放的铃声时遇到问题(我不是要检测默认铃声,而是实际播放的铃声,因为用户设置的特定铃声可能会有所不同对于特定联系人)。 我正在使用 Ringtone.isPla
我正在 2 部手机上进行测试。在一台设备中,媒体播放器的 isPlaying() 即使在播放时也始终返回 false。但在其他设备(lg optimus Gingerbread )中,isPlayin
我目前正在开发聊天应用程序。在此具有发送语音注释的功能。语音笔记的发送和播放工作正常。但问题是,当我播放语音笔记时,之前播放的语音笔记不会停止..两者一起播放。 这是我播放语音笔记的代码, publ
我刚刚更新到最新版本的 Lottie;我们正在使用 Xamarin 表单,现在我的应用程序崩溃了,因为它找不到 正在播放 循环 谁能告诉我他们被什么取代了? 找不到任何建议替换的内容。 最佳答案 我最
import React from "react"; import { Player } from "@react-native-community/audio-toolkit"; export de
import React from "react"; import { Player } from "@react-native-community/audio-toolkit"; export de
我有一个应用程序,可以在按下按钮时播放声音。 我试图强制 MediaPlayer 在来电时静音,然后以正常音量继续(在空闲模式下)。 我编写了下面的代码来完成此操作,尽管它在下一行的 NullPoin
好的,我在同一 Activity 中获得了两个音轨,因此我为它们使用了两个媒体播放器。我一切正常。唯一的问题是调用 onPause() 时,音频轨道会在 Activity 暂停时暂停。 如果正在播放音
在确定 SKAction.playSoundFileNamed 不仅存在漏洞和泄漏,而且还专门在 IAP 中断期间造成崩溃后,我正在为我们的游戏试验其他音效选项(这不是 OK,Apple)。我们正在尝
当我的 audioPlayer 的 viewDidLoad 时,我正在尝试执行 if 语句。基本上就是说,如果 audioPlayer 正在播放,则暂停它。像这样: override func vie
我发布了我的应用程序,但在 Galaxy Nexus 或 HTC Explorer 等手机上我的应用程序崩溃了。 我在许多手机上进行了测试,应用程序运行完美。 您能解释一下为什么会发生这种情况以及如何
public static MediaPlayer mp=null; public static void playGeneric(int name, final ImageButton button
我正在尝试解决 Android MediaPlayer 的“状态不匹配”错误,当我尝试暂停时,该错误偶尔会在音频播放期间抛出。 如 this question 中所述,Android MediaPla
我有一个包含 AVPlayer 的 UICollectionViewCell。在 cellForItemAtIndexpath 上,我需要检查分配给 AVPlayer 的 URL 是否可播放。我使用以
我有这个: -(ALuint)ID { return self.soundSource->_sourceId; } -(void)play { [self.engine playSound:s
我是一名优秀的程序员,十分优秀!