2011-05-25 26 views
6

İşte benim kod:jquery ile zamanlama olaylarını yardıma mı ihtiyacınız

 tripper = 2; 
    $("#topheader").mousewheel(function(event, delta) { 
     if (tripper == 2){ 
      startPlace = $("#content").scrollLeft(); 
      startCounter = something; 
      tripper = 1; 
     } else { 
      currentPlace = $("#content").scrollLeft(); 
      if(startCounter < 100){ // milliseconds 
      distanceMoved = currentPlace - startPlace; 
       if(distanceMoved > 100){ 
        slideRight(); 
       } else if(distanceMoved < -100){ 
        slideLeft(); 
       } 
      } else { 
       tripper = 2; 
      } 
     } 
    } 

100 milisaniye olmadığını kontrol etmek için doğru yolu nedir bu işlev sayesinde ilk kez duygusu geçti? Kodun 5. satırında, bir çeşit sayaçla değiştirilmesi gereken "bir şey" değişkenine sahibim. Ya da belki de tamamen yanlış bir şekilde bu konuya gidiyorum. Öneriler?

var elapsed = now - then; 

:

var now = new Date(); 

Çıkarma milisaniye cinsinden farkını verir: Daha sonra başka biri yapabilir

var then = new Date(); 

:

cevap

5

Böyle bir "Tarih" nesne örneğini (Subtractio'nun her iki tarafında iki tarih değeri göründüğünde "Tarih" ten "Sayı" ya zorlama örtülüdür. n operatör. . Dönüşümü) sadece "now.getTime()" çağırmak gibidir

3

Aşağıdaki kod denenmemiş ama temelde, 100 milisaniye sonra, boş olarak geri timeout sıfırlamak gerekir ve sonuçta 2'ye geri tripper set;

tripper = 2; 
timeout = null; 
$("#topheader").mousewheel(function(event, delta) { 
    if (tripper == 2){ 
     startPlace = $("#content").scrollLeft(); 
     if (!timeout) { 
      setTimeout(function() { 
       timeout = null 
      }, 100); 
     } 
     tripper = 1; 
    } else { 
     currentPlace = $("#content").scrollLeft(); 
     if(timeout){ // milliseconds 
      distanceMoved = currentPlace - startPlace; 
      if(distanceMoved > 100){ 
       slideRight(); 
      } else if(distanceMoved < -100){ 
       slideLeft(); 
      } 
     } else { 
      tripper = 2; 
     } 
    } 
} 
İlgili konular