मैंने खींचकर पेज पैनोरेट को लागू करने का प्रयास किया है। मेरे कार्यान्वयन में पृष्ठ थोड़ी देर के लिए चलता है जब उपयोगकर्ता ने माउस बटन को जारी किया है, जैसे Google मानचित्र में मानचित्र खींचना। अब जब मैं बटन जारी करता हूं तो माउस इस प्रभाव को रोकना चाहता है, जब माउस आगे नहीं बढ़ता है। समस्या यह है कि, अगर मैं mouseup
ईवेंट निकाल दिया जाता है तो माउस वास्तव में यह पता लगाने के लिए नहीं पता कि कैसे पता चलता है।माउसअप को निकाल दिए जाने पर माउस कैसे चल रहा है यह पता लगाने के लिए?
अभी के लिए मैंने ड्रैगिंग गति की गणना करके इस समस्या से निपटने की कोशिश की है और फिर गति की तुलना पूर्व-मूल्यवान "संवेदनशीलता" से करें, जो ज्यादातर समय काम करती है, लेकिन कभी-कभी यह विफल हो जाती है।
jsFiddle पर सरलीकृत उदाहरण। पहेली के चारों ओर खेलते समय, कृपया एफएफ में मिडलबटन का उपयोग करें, ड्रैगगैबल div "स्टिक" बाएं बटन पर।
स्यूडोकोड:
AniMove = function (doc, element, sensitivity, panspeed, duration) {
var mouseDown = function (e) {
sTime = new Date();
originalX = mouseX = e.clientX;
originalY = mouseY = e.clientY;
/* addEventListeners mousemove & mouseup for document */
return;
},
mouseMove = function (e) {
/* Setting new position for #square + new mouseX & Y */
return;
},
mouseUp = function() {
var dc = 1;
/* removeEventListeners mousemove & mouseup */
eTime = new Date();
vX = Math.round((50 * panspeed) * (originalX - mouseX)/(eTime - sTime));
vY = Math.round((50 * panspeed) * (originalY - mouseY)/(eTime - sTime));
// Check whether mouse is moving or not,
// now checking the speed against sensitivity, which is not reliable
if (Math.abs(vX) < sensitivity){vX = 0;}
if (Math.abs(vY) < sensitivity){vY = 0;}
for (n = 0; n < dur; n++, dc += 0.001) {
vX = Math.round(vX * dec/dc);
vY = Math.round(vY * dec/dc);
delay[n] = setTimeout(endDrag(n, vX, vY), n * 50);
}
return;
},
endDrag = function (n, vX, vY) {
/* Setting new position for #square */
return;
},
dec = 1 - 120/duration;
panspeed *= -0.01;
duration /= 50;
element.addEventListener('mousedown', mouseDown, false);
}
drag = new AniMove(document, document.getElementById('square'), 20, 100, 500);
इसलिए, यह भी संभव हो तो माउस या इस स्थिति में नहीं चलती है पता लगाने के लिए है? शायद मुझे इस काम के लिए एक अलग दृष्टिकोण की जरूरत है?
धन्यवाद, अब यह काम करता है! सोचा 10 एमएस चाल था। कामकाजी पहेली: http://jsfiddle.net/cww55/7/ – Teemu