var map, wingr,wingl,muscler, musclel, stringr, stringl, cavity, flight_path, flight_path_length, last_point, step; var prev_step = 0 step = 0; map = Snap('#left-bits'); wingr = map.select('#wingr'); wingrbbox = wingr.getBBox(); wingl = map.select('#wingl'); winglbbox = wingl.getBBox(); musclel = map.select('#musclel'); musclelbbox = musclel.getBBox(); muscler = map.select('#muscler'); musclerbbox = muscler.getBBox(); stringl = map.select('#stringl'); stringlbbox = stringl.getBBox(); stringr = map.select('#stringr'); stringrbbox = stringr.getBBox(); cavity = map.select('#cavity'); cavitybbox = cavity.getBBox(); flight_path = map.select('#path'); flight_path_l = Snap.path.getTotalLength(flight_path); last_point = flight_path.getPointAtLength(flight_path_length); console.log('step', step, 'final', flight_path_l) function angle(n) { return Math.random() * (n * 2) + n; } let cb = function() { prev_step = step step = step + parseInt(pas.innerHTML) * 10; if (step > flight_path_l) prev_step = step = 0 $('#pas').text(step) $('#prev_step').text(prev_step) $('#step').text(step) $('#next_step').text(flight_path_l) console.log('pas', pas.innerHTML) Snap.animate(prev_step, step, function(val) { //console.log('pas'); step = val; moveToPoint = Snap.path.getPointAtLength( flight_path, val ); x = moveToPoint.x ; y = moveToPoint.y ; // console.log('animating ' + x + ' ' + y); wingr.transform('translate(' + x + ',' + y + ') '+', '+wingrbbox.cx+', '+wingrbbox.cy); wingl.transform('translate(' + x + ',' + y + ')' + (moveToPoint.alpha - 90)+', '+winglbbox.cx+', '+winglbbox.cy); cavity.transform('translate(' + x + ',' + y + ') rotate('+ (moveToPoint.alpha - angle(-10))+', '+cavitybbox.cx+', '+cavitybbox.cy+')'); musclel.transform('translate(' + x + ',' + y + ') rotate('+ (moveToPoint.alpha - angle(20))+', '+musclelbbox.cx+', '+musclelbbox.cy+')'); muscler.transform('translate(' + x + ',' + y + ') rotate('+ (moveToPoint.alpha - angle(30))+', '+musclerbbox.cx+', '+musclerbbox.cy+')'); stringr.transform('translate(' + x + ',' + y + ') rotate('+ (moveToPoint.alpha - angle(-20))+', '+stringrbbox.cx+', '+stringrbbox.cy+')'); stringl.transform('translate(' + x + ',' + y + ') rotate('+ (moveToPoint.alpha - angle(9))+', '+stringlbbox.cx+', '+stringlbbox.cy+')'); },5000, mina.easeout); } document.addEventListener("requestMove", cb,false);