我有一个Object构造函数来管理我在网站上的很多动画,我想将一个参数传递给start函数,这个参数是一个回调,就像oncomplete是我想要实现的,因为在某些动画停止的情况我想要一些元素出现。问题是我通过回调但没有任何反应,我真的不知道为什么函数没有参数,我给你留下一些代码我希望有人可以帮助我。
// 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,所以不太了解它如何与对象一起工作。在我为每个动画制作一堆变量和函数之前。
答案 0 :(得分:2)
在您的情况下,this.shouldLoop
为false
。它永远不会进入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();
}
}