當使用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'函數,這樣第二個清除函數會有正確的位置變量。
不幸的是,我找不到這樣的聽衆;任何人都可以指出我的方向是正確的,還是建議一種替代解決方案?
我很害怕這樣的事情...鑑於它被onclick事件調用,我無法將當前正在播放的anim變量傳遞給該函數,以便在新動畫開始之前停止。謝謝任何方式:) – Emma
是的。正常的JavaScript關閉範圍規則適用。因此,例如,在原始問題的代碼示例中,您傳遞給連接的內部函數將從「清除」函數內的變量上下文中關閉,因此在該示例中,例如,您可以訪問「位置「和」清除「。絕對不是你不能從事件回調中訪問任何東西! –