如何在Dojo中停止动画

时间:2013-08-09 14:56:57

标签: javascript dojo

使用Dojo 1.9,我正在播放一些像这样的动画:

that.fadeOutActive = baseFx.fadeOut({ node: "active-container", duration: 1000, delay: 3000 });
that.fadeInInactive = baseFx.fadeIn({ node: "inactive-container", duration: 1000, delay: 3000 });
coreFx.combine([that.fadeOutActive, that.fadeInInactive]).play();

然后尝试在事件上停止它们,如下所示:

coreFx.combine([that.fadeOutActive, that.fadeInInactive]).stop();

问题是,这可以防止动画被触发(这是所需的行为),但是如果它已经开始就不会停止它(这是问题)。如果可以的话,我怎么能停止动画?

编辑:事实证明我的问题不在我发布的代码中,而是在检测动画是否正在进行中。

1 个答案:

答案 0 :(得分:1)

  

dojo/fx::combine()是一个辅助函数,它可以获取dojo / _base / fx :: Animation对象的列表并将它们组合起来,使它们的效果全部并行运行。使用此功能可以同时生成和执行影响多个节点的动画。

您正在使用coreFx.combine同时fadeIn一个元素和fadOut另一个元素。

您应该存储对现有组合动画的引用,然后使用该引用来停止合并动画,而不是创建新的组合动画:

that.fadeOutActive = baseFx.fadeOut({ node: "active-container", duration: 1000, delay: 3000 }).play();
that.fadeInInactive = baseFx.fadeIn({ node: "inactive-container", duration: 1000, delay: 3000 }).play();
that.combinedAnim = coreFx.combine([that.fadeOutActive, that.fadeInInactive]).play();

然后再说:

that.combinedAnim.stop();