gpt4 book ai didi

javascript - 将回调传递给对象的方法

转载 作者:行者123 更新时间:2023-11-30 17:47:57 26 4
gpt4 key购买 nike

我有一个对象构造函数,它管理网站上的许多动画,我想将一个参数传递给启动函数,这个参数是一个回调,就像我想要实现的那样,因为在某些情况下动画停止的情况我希望出现一些元素。问题是我传递了回调,但没有任何反应,我真的不知道为什么函数没有接受参数,我给你留了一些代码,希望有人能帮助我。

// CONSTRUCTOR WHO MANAGE THE ANIMATIONS FOR THE WEBSITE
function SpriteAnimation(frameWidth, spriteWidth, spriteElement, shouldLoop, frameRate){
this.frameWidth = frameWidth;
this.spriteWidth = spriteWidth;
this.selector = document.getElementById(spriteElement);
this.shouldLoop = shouldLoop ;
this.curPx = 0;
this.frameRate = frameRate;
}

SpriteAnimation.prototype.start = function(callback){

this.selector.style.backgroundPosition = "-" + this.curPx + "px 0px";
this.curPx += this.frameWidth;

if (this.curPx < (this.spriteWidth - this.frameWidth)){
setTimeout(this.start.bind(this), this.frameRate);
} else if (this.shouldLoop) {
this.curPx = 0;
this.start();

if(callback && typeof callback === "function"){
callback();
}
}

};

现在是我用来调用回调的代码片段:

var letter = new SpriteAnimation(789.695652, 18163, "letter", false, 53.3);

letter.start(function(){
$("#form-field").fadeIn();
});

我不知道是不是我没有传递上下文或类似的东西,但实际上我正在学习 javascript,所以不太了解它如何与对象一起工作。之前每个动画只有一堆变量和函数。

最佳答案

在你的例子中,this.shouldLoopfalse。它永远不会进入 else if

var letter = new SpriteAnimation(789.695652, 18163, "letter", false, 53.3);

您的第四个参数 (false) 已分配给 shouldLoop

else if (this.shouldLoop) { // never steps into this because this.shouldLoop is false
this.curPx = 0;
this.start();

if(callback && typeof callback === "function"){
callback();
}
}

关于javascript - 将回调传递给对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19728980/

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