0

使用 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();

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

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

4

1 回答 1

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();
于 2013-08-11T12:07:31.337 回答