gpt4 book ai didi

javascript - 事件监听器发生后如何声明函数

转载 作者:行者123 更新时间:2023-12-03 01:57:02 25 4
gpt4 key购买 nike

我一直在尝试使用Audio元素制作此音乐播放脚本。
所以我的问题是,在加载元数据之前,我不希望这些功能可用。

我在这里使用这个对象。

var MusicPlayer = new Object();
MusicPlayer.source;
MusicPlayer.duration = 0;
MusicPlayer.Player = new Audio();
MusicPlayer.metadataloaded = false;

我试图首先创建一个定义这些函数的函数,该函数本身由事件侦听器加载。
function Playerinitialize()
{
MusicPlayer.metadataloaded = true;
}

然后
MusicPlayer.Player.addEventListener('loadedmetadata', function()
{

MusicPlayer.duration = this.duration;
console.log(this.duration);
console.log(MusicPlayer.duration / 60);
console.log(this.currentTime);
Playerinitialize();

});

但是说currentTime未定义是行不通的。因此,如何实现此目的,我正在这样做是为了防止在音频对象持续时间为NaN等时调用此函数。这是最有效的方法吗?
为什么我不能使用Prototype向MusicPlayer Object添加功能?

最佳答案

请看看这个。您将在这里找到所有事件处理程序以及有关所需音频对象的更多信息:Audio

我认为类似这样的东西应该适合您(编辑):

function  MusicPlayer(src, ready){
var player = new Audio();

var controller = { };

controller.play = function(){
player.play();
};

//add to controller all parameters you need here

player.onloadedmetadata = function() {
//do your things here: after metadata is loaded

//add to controller some more parameters
//retrieve your object:

ready(controller);

};

player.src = src;
}

var ready = function(controller){
//do with your player what you think is necessary
//via controller like:
controller.play();
}

关于javascript - 事件监听器发生后如何声明函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34494418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com