mirror of https://github.com/luileito/jsketch.git
1 line
1.3 KiB
JavaScript
1 line
1.3 KiB
JavaScript
!function(a){function b(a){function b(b,c,d){var e=c[d],f=c[d+1];if(0===d||e.strokeId!==f.strokeId){if(b.data.firstPointSize){var g=d>0?f:e;b.beginFill(b.data.strokeStyle).fillCircle(g.x,g.y,b.data.firstPointSize).endFill()}d>0&&a.sketchable("trigger","animationstep"),b.closePath().beginPath()}e.strokeId===f.strokeId&&b.line(e.x,e.y,f.x,f.y).stroke()}function d(a){return a instanceof Array?{x:a[0],y:a[1],time:a[2],strokeId:a[4]}:a}for(var e=a.data(c),f=e.sketch,g=e.strokes,h=(e.options.events,e.options.graphics),i=[],j=0;j<g.length;j++)for(var k=g[j],l=0;l<k.length;l++){var m=d(k[l]);m.strokeId||(m.strokeId=j),i.push(m)}a.sketchable("trigger","animationstart");var n,o=0;f.lineStyle(h.strokeStyle,h.lineWidth),function p(){n=requestAnimationFrame(p);try{b(f,i,o,h)}catch(c){console.error(c),cancelAnimationFrame(n)}++o===i.length-1&&(cancelAnimationFrame(n),a.sketchable("trigger","animationend"))}(),this.cancel=function(){return cancelAnimationFrame(n),this}}var c="sketchable";a.fn.sketchable.plugins.animate=function(d){for(var e={clear:function(a,b){b.animate&&b.animate.cancel()},destroy:function(a,b){b.animate&&b.animate.cancel()}},f="clear destroy".split(" "),g=0;g<f.length;g++){var h=f[g];d.sketchable("decorate",h,e[h],"animate")}a.extend(a.fn.sketchable.api,{animate:{strokes:function(){var e=a(this).data(c);return e.animate=new b(d),d}}})}}(jQuery); |