Ich versuche, eine Reihe von Argumenten zu einer Animate-Funktion innerhalb Snap SVG einschließlich einer Callback-Funktion zu übergeben. Der Callback (in diesem Fall das Entfernen des Elements) wird jedoch sofort beim Klicken ausgelöst und nicht nachdem die Animation abgeschlossen wurde. Wie es jetzt ist, wird das Element entfernt und die Animate-Funktion wird dann fehlerhaft, weil das Element nicht mehr existiert. Irgendwelche Ideen?Snap SVG .animate Rückruf wird sofort ausgelöst
var theCallback = theApp.destroyAnElement("#"+ theParentID);
//The function call
theAnimationFunctions.animateSingleSVGElementWithSnap('.stopped','#svg-container',{transform: 's1,0'}, 500, mina.backin, 0,0,theCallback);
// The animate function
animateSingleSVGElementWithSnap: function(element, parentSVG, animationValues, duration, easing, initialDelay, callback) {
var s = Snap.select("#"+ parentSVG),
theElement = s.select(element);
setTimeout(function() {
theElement.stop().animate(animationValues, duration, easing, function() {
callback;
});
}, initialDelay);
}
UPDATE
theCallback = function() { theApp.destroyAnElement("#"+ theElementID); };
theAnimationFunctions.animateSingleSVGElementWithSnap('.stopped','#svg-container',{transform: 's1,0'}, 500, mina.backin, 0,0,theCallback);
theAnimationFunctions = {
animateSingleSVGElementWithSnap: function(element, parentSVG, animationValues, duration, easing, initialDelay, callback) {
var s = Snap.select("#"+ parentSVG),
theElement = s.select(element);
setTimeout(function() {
theElement.stop().animate(animationValues, duration, easing, function() {
callback();
});
}, initialDelay);
}
Mit dem oben genannten Updates ich jetzt einen Fehler bei der Beendigung der Animation erhalten:
"Uncaught TypeError: callback is not a function"
Haben Sie definieren 'theCallback' _after_' theAnimationFunctions.animateSingleSVGElementWithSnap' nennen? Wenn dies der Fall ist, wird 'theCallback' beim Aufruf" undefiniert "sein, was in der Tat" keine Funktion "ist. –
theCallback ist vor dem Funktionsaufruf definiert - nur schlechtes Einfügen von meiner Seite. – Yuschick
Es sieht aus wie die Parameter und Argumente von 'animateSingleSVGElementWithSnap: function (element, parentSVG, animationValues, duration, easing, initialDelay, callback) {' stimmen nicht mit der Aufrufseite überein 'theAnimationFunctions.animateSingleSVGElementWithSnap ('. Stopped', '# svg-container ', {transform:' s1,0 '}, 500, mina.backin, 0,0, theCallback); '. Die Aufrufstelle hat einen zusätzlichen Parameter, und "Callback" erhält wahrscheinlich das vorletzte Argument, d. H. "0". –