SORU
2 ŞUBAT 2011, ÇARŞAMBA


Javascript milisaniye cinsinden zaman almanın daha iyi bir yolu?

Orada bir alternatif olarak JavaScript alma zamanı milisaniye kullanma tarihi nesne, ya da en azından bir şekilde yeniden o nesne kalmadan oluştur yeni bir nesne her zaman ihtiyacım olan bu değer? JavaScript ile basit bir oyun motoru yapmaya çalışıyorum çünkü bu soruyorum ve "delta çerçeve zaman", yeni bir Tarih oluşturmak için her kareyi nesne. hesaplarken Performansı hakkında bu etkileri endişeli değil ben iken, tam olarak ne zaman bu nesne tarafından döndürülen güvenilirliği ile bazı sorunlar yaşıyorum.

Ben biraz garip bir "atlama" animasyon, her saniye ya da öylesine, ve ben emin değilim eğer bu konu ile alakalı JavaScript Çöp Toplama veya bir sınırlama Tarihi nesne ne zaman güncelleme çok hızlı. Tamamen pürüzsüz eğer delta bir sabit değer, animasyon, sonra bir set, "atlama" zamanım şekilde ilişkilidir. bu oldukça emin değilim eğer öyleyse

Verebilirim sadece ilgili kod delta zamanı hesaplamak yoludur :

prevTime = curTime;
curTime = (new Date()).getTime();
deltaTime = curTime - prevTime;

Hesaplama hareketi animasyon / ben delta zaman sabit bir değer çarpın.

Eğer yok önlemek için yol alma zamanı milisaniye kullanarak Tarihi nesne, bir işlevi kademeli bir değişken (geçen süre milisaniye beri oyun başladı) ve çağrılan kullanarak SetTimer işlevi bir oranı her milisaniye olması etkin ve güvenilir bir alternatif?

Edit : şimdi farklı tarayıcılarda benim kodu test ettik ve bu "" çok açıktır sadece, Firefox Chrome değil. atlamak gibi görünüyor Ancak yine de, her iki tarayıcı içinde çalışan bir yöntem olsaydı güzel olurdu.

CEVAP
2 ŞUBAT 2011, ÇARŞAMBA


Date.now() deneyin.

Bu atlama büyük olasılıkla çöp toplama kaynaklanmaktadır. Genellikle çöp toplama yeniden değişkenleri mümkün olduğunca kaçınılması, ama özellikle ne çöp toplama duraklar azaltmak için kullanabilirsiniz söyleyemem.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Anthony Cumia

    Anthony Cumi

    5 EYLÜL 2006
  • Charles Nesson

    Charles Ness

    27 NİSAN 2006
  • L- Crysis

    L- Crysis

    30 Aralık 2011