Próbuję przekazać zestaw argumentów do funkcji animacji w Snap SVG, w tym funkcji wywołania zwrotnego. Jednak wywołanie zwrotne (w tym przypadku jest to usunięcie elementu) uruchamia się natychmiast po kliknięciu, a nie po zakończeniu animacji. Tak jak obecnie, element jest usuwany, a funkcja animacji to błędy, ponieważ element już nie istnieje. Jakieś pomysły?Snap SVG. Natychmiastowe wywołania zwrotne odpalają natychmiast
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);
}
Z powyższych aktualizacjach, teraz pojawia się błąd po zakończeniu animacji:
"Uncaught TypeError: callback is not a function"
Czy można zdefiniować 'theCallback' _after_ wywołanie' theAnimationFunctions.animateSingleSVGElementWithSnap'? Jeśli tak, 'theCallback' będzie' undefined' na inwokacji, która w rzeczy samej nie jest funkcją. –
theCallback jest zdefiniowany przed wywołaniem funkcji - tylko słabe wklejenie z mojej strony. – Yuschick
Wygląda na to, że parametry i argumenty funkcji 'animateSingleSVGElementWithSnap: (element, parentSVG, wartości animacji, duration, easing, initialDelay, callback) {' nie pasują do strony wywołania 'theAnimationFunctions.animateSingleSVGElementWithSnap ('. Stopped', '# svg-container ', {transform:' s1,0 '}, 500, mina.backin, 0,0, theCallback); '. Strona wywoławcza ma jeden dodatkowy parametr, a "oddzwanianie" prawdopodobnie ma przypisany przedostatni argument, tj. '0'. –