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」関数をすぐに実行して、2 番目のクリア関数が正しい位置変数を持つようにすることでした。
残念ながら、そのようなリスナーは見つかりません。誰かが私を正しい方向に向けたり、別の解決策を提案したりできますか?