使用 dojo.fx 动画时是否有等效的“中断”功能?
在我的网站上,我通过将 div 从屏幕上向左滑动然后清除 innerHTML 来清除一个区域。为了让 div 可以在同一个地方使用,我将它的最终位置设置为等于它的原始位置(尽管它是空的并且不可见,所以用户看不到)。我通过在触发函数时引用位置来避免对位置进行硬编码来做到这一点。
function clear (node) {
// get the current position
var position = domGeom.position (node, true);
// slide the calendar off the screen
var anim = dojo.fx.slideTo ({
node: node,
left: -2000,
unit: "px"
});
// attach on onEnd function
dojo.connect (anim, "onEnd", function (n1, n2) {
node.innerHTML = "";
// Reset the node's position
domStyle.set (node, "left", position.x + "px");
});
anim.play();
}
问题在于,如果用户在函数运行时单击“清除”,例如,如果他们不小心双击,那么“位置”变量会采用动画中节点的值。如果我稍后将某些内容放入节点中,则说明它位于错误的位置,或者有时完全不在屏幕上。
我想做的是为动画添加一个监听器,这样如果它被中断,它会停止动画并立即执行“onEnd”函数,这样第二个清除函数就会有正确的位置变量。
不幸的是,我找不到这样的听众;谁能指出我正确的方向,或提出替代解决方案?