dojo动画中断?

时间:2013-08-20 14:20:24

标签: animation dojo interrupt

使用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'功能,这样第二个清除功能就会有正确的位置变量

不幸的是,我找不到这样的倾听者;任何人都可以指出我正确的方向,或建议一个替代解决方案吗?

1 个答案:

答案 0 :(得分:0)

你可能正在打断你页面中的事件流,但是你并没有真正“打断”动画术语:动画无法给你一个事件来告诉你Clear被压了,我是害怕。

如果您希望在用户按下Clear时停止动画,则必须在用户按下Clear时手动停止动画:Dojo无法自动检测到两者之间是否存在任何链接,实际上可能存在即使用户按下清除,您也希望继续使用其他动画。

因此,您可能希望在适当的时候在动画上调用.stop