2011-08-03 40 views
8

Tôi hy vọng bạn cũng tốt hôm nay, tôi đang cố gắng tính toán khoảng cách vuốt (một cử chỉ cảm ứng) trên một trang web trên điện thoại di động, bạn sẽ biết bao nhiêu pixel mà người dùng đã vuốt qua màn hình ?Tính toán khoảng cách swipe trong jQuery-mobile

$('.cmButtons').live('swipeleft',function(){ 
    console.log("swiped left"); 
}); 
+1

Tôi chỉ biết làm thế nào để làm điều này không sử dụng jQuery, vì vậy đây không phải là một câu trả lời nhưng có lẽ là một đầu mối. Các tọa độ x, y bắt đầu của thao tác vuốt được thiết lập trong sự kiện touchStart. Ngoài ra, bạn chỉ định startPos cho endPos, vị trí kết thúc mặc định. Trong trình nghe touchMove, bạn tiếp tục chú ý đến các tọa độ hiện tại, làm cho các tọa độ endPos này trở thành. Trong touchEnd bạn lưu ý sự khác biệt giữa startPos và endPos. Vì vậy, hoặc jQuery là lộ startPos và endPos tọa độ trong sự kiện swipeLeft của nó, hoặc bạn phải dây lên plug-in của riêng bạn để thực hiện điều này bên ngoài jQuery. – Tim

+0

bạn có thể thêm một số mã mẫu không? và tôi hiểu rằng nó có thể hơi khác nhưng tôi muốn sử dụng mã của bạn làm cơ sở để bắt đầu :) – Xavier

+1

Related: http://stackoverflow.com/questions/3183872/does-jquery-preserve-touch-events-properties và http: // stackoverflow.com/questions/4755505/cách-to-recogized-touch-event-using-jquery-cho-ipad-safari-browser-is-it-possible –

Trả lời

2

Không chắc chắn nếu điều này giúp nhưng với Beta 2 họ đã phát hành một số chức năng swipe thêm

cấu hình ngưỡng sự kiện swipe thêm

Có là một con số các hằng số được mã hóa cứng trong mã swipe jquery.mobile.event.js . Đối với các nhà phát triển cần tinh chỉnh các hằng số đó để cho phép dịch chuyển dọc lớn hơn và vẫn còn đăng ký một lần vuốt, tính năng mới này cho phép chúng được điều chỉnh. Cảm ơn tới mlitwin để đóng góp điều này.

  • scrollSupressionThreshold (mặc định: 10px) - Hơn ngang dịch chuyển này, và chúng tôi sẽ ngăn chặn di chuyển
  • durationThreshold (mặc định: 1000ms) - Nhiều thời gian hơn thế này, và nó không phải là một swipe
  • horizontalDistanceThreshold (mặc định: 30px) - Vuốt ngang chuyển vị phải lớn hơn giá trị này.
  • verticalDistanceThreshold (mặc định: 75px) - Vuốt dịch chuyển dọc phải nhỏ hơn giá trị này.
+0

cuối cùng tôi đã phải viết một người nghe tùy chỉnh trong jQuery Mobile sẽ kích hoạt khi bắt đầu khai thác - swipe và tap - swipe sự kiện. Cảm ơn bạn đã gửi. Nó khiến tôi bắt đầu ở đúng nơi. – Xavier

+0

np. bạn có thể chia sẻ với bạn người nghe tùy chỉnh không? có thể giúp đỡ người khác cũng như –

2

Tôi không thể tìm ra cách để có được khoảng cách bay từ phương pháp, vì vậy thay vào đó tôi chỉ thiết lập một ngưỡng toàn cầu mới trên trang của tôi.

//Override the default horizontalDistanceThreshold of 30 
$.event.special.swipe.horizontalDistanceThreshold = 200; 

Tôi đang sử dụng phiên bản cũ hơn của jQM (v1.0 vẫn ...) để điều này có thể đã thay đổi. Thật dễ dàng tìm thấy trong nguồn nếu bạn chỉ bắt đầu tìm kiếm các sự kiện vuốt.

Các vấn đề liên quan