我正在尝试为图像添加动画效果。此动画在两个屏幕过渡之间播放。此动画用于显示等待栏。我使用的是require-jquery.js,版本是1.7.1。我收到了一个不一致的错误:
'stopped'为null或不是对象。
有人遇到同样的问题吗?请分享解决方案。
更新代码:
templateFn: Handlebars.compile(
'<div class="waitingBar"></div>'
),
render: function(parent) {
this.element = $(this.templateFn());
this._animate();
parent.append(this.element);
},
_animate: function() {
var self = this;
this.element.animate({
"background-position-x": "+=1024px"
},
8000,
"linear",
function () {
self.element.css({
"background-position-x": "-1024"
});
self._animate();
});
}
我在require-jquery库中收到错误。以下是功能: 图书馆代码:
function Animation( elem, properties, options ) {
var result,
stopped,
index = 0,
length = animationPrefilters.length,
deferred = jQuery.Deferred().always( function() {
// don't match elem in the :animated selector
delete tick.elem;
}),
tick = function() {
if ( stopped ) {
return false;
}
var currentTime = fxNow || createFxNow(),
remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
// archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)
temp = remaining / animation.duration || 0,
percent = 1 - temp,
index = 0,
length = animation.tweens.length;
for ( ; index < length ; index++ ) {
animation.tweens[ index ].run( percent );
}
deferred.notifyWith( elem, [ animation, percent, remaining ]);
if ( percent < 1 && length ) {
return remaining;
} else {
deferred.resolveWith( elem, [ animation ] );
return false;
}
}
答案 0 :(得分:0)
**我自己解决了....这里是解决方案:** 我有一个名为destroy()的方法,当我移动到下一页时会被调用。我在destroy()方法中停止动画(使用.stop())。我们在同一个元素上调用多个动画。后面的动画放在元素的效果队列中。这些动画直到第一个动画完成才会开始。调用.stop()时,队列中的下一个动画立即开始。但由于元素引用存在于内存中(this.element不是null),第二个动画存在于效果队列中,它会再次尝试动画,但不会找到附加到它的数据。所以在这种情况下,stop可能会变为null。因此,当它试图检查是否(停止)时,它可能会给出错误。
最后我将.stop()设置为.stop(true)来清除队列,并使this.element = null。 这两个变化似乎对我有用.....:)