【发布时间】:2011-10-27 00:50:49
【问题描述】:
我正在使用 mootools 1.4.1,我正在尝试获取一个 div 来“补间”屏幕宽度,以便在完成时触发另一个功能。但是,补间一直在触发,我不相信它会触发我想要的功能。
代码如下:
$('photo-loading_amt').set('tween', {duration: '1000ms',
link: 'cancel',
transition: 'linear',
property: 'width',
onComplete: function() {
var photoContainers = $$('.photo-container')
if (photoNum != photoContainers.length) {
nextPhoto(photoNum.toInt() + 1);
}
else {
nextPhoto(1);
}
}
});
我们将不胜感激。
@Dimitar Christoff,这是 nextPhoto 函数的代码:
function nextPhoto(photoNum) {
resetTimeline();
var photoContainers = new Array();
photoContainers = $$('.photo-container');
var photoFx = new Fx.Tween(photoContainers[photoNum.toInt() - 1], {
duration: 'normal',
transition: Fx.Transitions.Sine.easeOut,
property: 'opacity',
onComplete: function() {
photoContainers[photoNum.toInt() - 1].setStyle('visibility', 'hidden');
photoContainers[photoNum.toInt() - 1].setStyle('opacity', 1);
if (photoNum == photoContainers.length) {
photoContainers[0].setStyle('z-index', photoContainers.length);
}
}
});
if (photoNum == photoContainers.length) {
photoContainers[0].setStyle('z-index', 0);
}
photoFx.tween(1, 0);
//alert("photoNum = " + photoNum + "\n" + "photoContainers.length = " + photoContainers.length);
if (photoNum == photoContainers.length) {
photoContainers[0].setStyle('visibility', 'visible');
}
else {
photoContainers[photoNum.toInt()].setStyle('visibility', 'visible');
//loadingPhotos(photoNum.toInt() + 1);
}
// hard reset the loadingPhotos function
} // FUNCTION nextPhoto 结束
【问题讨论】:
-
这段代码确实没有显示任何递归,除非 nextPhoto 调用相同的代码,这会导致 onComplete 再次触发。你能显示更多吗,拜托。否则,您可以尝试对 onComplete 使用伪 :once 事件,例如。
element.get("tween").addEvent("complete:once", fn) -
@Dimitar Christoff,这是 nextPhoto 的代码。它确实调用了上面代码嵌入的函数loadingPhotos,但现在被注释掉了,它仍然重复。
标签: mootools mootools-fx