使用dojo.fx动画时是否有等效的'on interrupt'功能?
在我的网站上,我通过向左滑动屏幕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'功能,这样第二个清除功能就会有正确的位置变量
不幸的是,我找不到这样的倾听者;任何人都可以指出我正确的方向,或建议一个替代解决方案吗?
答案 0 :(得分:0)
你可能正在打断你页面中的事件流,但是你并没有真正“打断”动画术语:动画无法给你一个事件来告诉你Clear被压了,我是害怕。
如果您希望在用户按下Clear时停止动画,则必须在用户按下Clear时手动停止动画:Dojo无法自动检测到两者之间是否存在任何链接,实际上可能存在即使用户按下清除,您也希望继续使用其他动画。
因此,您可能希望在适当的时候在动画上调用.stop。