संपादित: यहाँ पर कार्य चल रहा है कि एक फिर से प्रयोग करने योग्य जे एस वस्तु के रूप में नीचे वर्णित दूसरी अवधारणा को पैकेज है। आप कोड संपादित कर सकते हैं या नेत्रहीन वक्र जिसके परिणामस्वरूप कोड को देखने के लिए खींचें:
http://phrogz.net/SVG/animation_on_a_curve.html
मैं व्यक्तिगत रूप से एसवीजी, जो बात की इस तरह बना देता है का उपयोग करें (एक मनमाना Bézier वक्र साथ एनिमेट) तुच्छ <animateMotion>
तत्व का उपयोग कर। बोनस के रूप में, आप इसे अपने लिए रोटेशन की गणना भी कर सकते हैं। कुछ उदाहरण:
नोट आप भी वास्तव में उपयोग एसवीजी परिणाम प्रदर्शित करने के लिए की जरूरत नहीं है कि; आप इस एनीमेशन के साथ बस ऑफ-स्क्रीन एसवीजी बना सकते हैं और एनिमेटेड तत्व के परिवर्तन को वांछित बिंदु/रोटेशन प्राप्त करने के लिए नमूना बना सकते हैं।
वैकल्पिक रूप से जहां पर मार्ग के किनारे होना चाहिए (यदि आप रोटेशन नहीं करना चाहते, या ट्रेवर्सल की दर को नियंत्रित करने, जबकि यह अपने आप गणना करना चाहते हैं) आप एक एसवीजी पथ बना सकते हैं और बस का उपयोग getPointAtLength()
/getTotalLength()
को खोजने के लिए कुल ट्रैवर्सल दूरी का एक दिया प्रतिशत।
// Moving along an S curve from 0,0 to 250,450
var p = document.createElementNS('http://www.w3.org/2000/svg','path');
p.setAttribute('d','M0,0 C350,20 -200,400 250,450');
var len = p.getTotalLength();
for (var i=0;i<=100;i+=10){
var pct = i/100;
var pt = p.getPointAtLength(pct*len);
console.log(i, pt.x, pt.y);
}
// 0 0 0
// 10 65.54324340820312 10.656576156616211
// 20 117.17988586425781 49.639259338378906
// 30 120.2674789428711 114.92564392089844
// 40 100.49604034423828 178.4400177001953
// 50 78.06965637207031 241.1177520751953
// 60 63.526206970214844 305.9412841796875
// 70 74.59959411621094 370.6294860839844
// 80 122.1227798461914 415.8912658691406
// 90 184.41302490234375 438.8457336425781
// 100 250 450
अब तुम सब करने की है .style.top
और अपने <div>
या <img>
की .style.left
सेट किया गया है उचित रूप से: इस के साथ आप भी एक एसवीजी दस्तावेज़ जरूरत नहीं है। एकमात्र 'कड़ी' हिस्सा यह तय कर रहा है कि आप where to put the handles को दिखने और परिभाषित करने के लिए वक्र को क्या चाहते हैं।
मैंने कहा एक घुमावदार मार्ग – Francesco
इस सवाल देखें:: http://stackoverflow.com/questions/2240052/how-would
यहाँ एक त्वरित प्रदर्शन मैंने बनाया, jQuery.path प्लगइन के शीर्ष पर बनाया गया है -याउ-एनिमेट-कुछ-इतना-यह-निम्न-ए-वक्र – bjudson