JavaScript'te date nesnesini kullanarak milisaniye cinsinden zaman elde etmenin bir alternatifi var mı, yoksa en azından bu değeri almam gerektiğinde yeni bir nesne başlatmak zorunda kalmadan o nesneyi yeniden kullanmanın bir yolu var mı? Bunu soruyorum çünkü JavaScript'te basit bir oyun motoru yapmaya çalışıyorum ve "delta kare zamanını" hesaplarken, her karede yeni bir Date nesnesi oluşturmam gerekiyor. Bunun performans sonuçları hakkında çok endişelenmeme rağmen, bu nesnenin döndürdüğü kesin zamanın güvenilirliği ile ilgili bazı sorunlar yaşıyorum.
Animasyonda her saniyede garip bir "zıplama" alıyorum ve bunun JavaScript'in Çöp Toplama veya bu kadar hızlı güncelleme yaparken Date nesnesinin bir sınırlaması ile ilgili olup olmadığından emin değilim. Delta değerini bazı sabitlere ayarlarsam, o zaman animasyon mükemmel pürüzsüzse, bu yüzden bu "zıplamanın" zamanı alma şeklimizle ilgili olduğundan eminim.
Verebileceğim tek ilgili kod, delta zamanını hesaplama şeklimdir:
prevTime = curTime;
curTime = (new Date()).getTime();
deltaTime = curTime - prevTime;
Hareket / animasyon hesaplanırken sabit bir değeri delta zamanı ile çarpıyorum.
Date nesnesini kullanarak milisaniye cinsinden zamanı elde etmekten kaçınmanın bir yolu yoksa, bir değişkeni artıran (oyun başladığından bu yana geçen milisaniye cinsinden geçen süre olan) ve SetTimer işlevi kullanılarak her milisaniyede bir verimli ve güvenilir bir alternatif olabilir mi?
Düzenleme: Şimdi kodumu farklı tarayıcılarda test ettim ve bu "atlama" gerçekten sadece Chrome'da görünür, Firefox'ta değil gibi görünüyor. Ancak, her iki tarayıcıda da çalışan bir yöntem olsaydı yine de iyi olurdu.
Date.getMillisecondssadece geçerli saniyedeki milisaniyeyi (yani 0 - 999) döndüren bir şey olabilir mi? Örneğinizde bu işlevi kullanmıyorsunuz, ama belki başka bir yerde mi yoksa farklı bir dalda mı kullanılıyor?