0

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 番目のクリア関数が正しい位置変数を持つようにすることでした。

残念ながら、そのようなリスナーは見つかりません。誰かが私を正しい方向に向けたり、別の解決策を提案したりできますか?

4

1 に答える 1