我正在使用Angular中的服务播放音频,但我无法让它停止。这是我的play()
方法:
play(item: string): void {
const audio = new Audio();
audio.src = item;
audio.load();
audio.play();
}
然后,在我的组件中,我创建了一个mute()
方法,我想停止当前播放的所有音频:
mute(): void {
const sounds = document.getElementsByTagName('audio');
console.log(sounds);
for (let i = 0; i < sounds.length; i++) {
sounds[i].pause();
}
}
但是,它在console.log
中没有显示任何声音,因此,它们都没有被暂停。
答案 0 :(得分:1)
public void openEditTask(int position) {
if (newTaskFragment != null) closeNewTaskFragment();
if (editTaskFragment != null) closeEditTaskFragment();
editTaskFragment = EditTaskFragment.newInstance(position);
transaction = getSupportFragmentManager().beginTransaction();
transaction.setCustomAnimations(R.anim.enter_from_right, R.anim.exit_to_right);
transaction.replace(R.id.edit_task_frame_xml, editTaskFragment);
transaction.commit();
}
找不到音频标签,因为它们尚未添加到文档中。
您可以使用document.getElementsByTagName('audio')
- 方法末尾的这行代码将音频元素添加到文档中:play()
或者,您可以将音频对象保留在数组中,并使该数组可用于您的组件,而不是使用document.getElementsByTagName("body")[0].appendChild(audio);
。这种方法被认为优于Angular应用程序中的直接DOM操作。
答案 1 :(得分:1)
在您的play
方法中,您创建了Audio
的实例并让它播放,但除了浏览器之外,没有人知道此实例......
查询DOM不会导致您的Audio
个实例...
您必须保存所有播放音频文件的列表。并静音停止它们。