มีทางเลือกอื่นใน JavaScript ในการรับเวลาเป็นมิลลิวินาทีโดยใช้อ็อบเจกต์ Date หรืออย่างน้อยก็เป็นวิธีนำวัตถุนั้นกลับมาใช้ใหม่โดยไม่ต้องสร้างอินสแตนซ์ของวัตถุใหม่ทุกครั้งที่ต้องการรับค่านี้ ฉันถามสิ่งนี้เพราะฉันกำลังพยายามสร้างเอ็นจิ้นเกมอย่างง่ายใน JavaScript และเมื่อคำนวณ "เวลาของเดลต้าเฟรม" ฉันต้องสร้างวัตถุวันที่ใหม่ทุกเฟรม ในขณะที่ฉันไม่ได้กังวลเกี่ยวกับผลกระทบของประสิทธิภาพการทำงานนี้ฉันมีปัญหากับความน่าเชื่อถือของเวลาที่แน่นอนที่ส่งคืนโดยวัตถุนี้
ฉันได้รับ "กระโดด" แปลกในภาพเคลื่อนไหวทุกวินาทีหรือมากกว่านั้นและฉันไม่แน่ใจว่าเกี่ยวข้องกับ Garbage Collection หรือข้อ จำกัด ของวัตถุ Date เมื่ออัปเดตเร็วเกินไป ถ้าฉันตั้งค่าเดลต้าเป็นค่าคงที่ดังนั้นอนิเมชั่นก็ราบรื่นดีดังนั้นฉันค่อนข้างแน่ใจว่า "การกระโดด" นี้เกี่ยวข้องกับวิธีที่ฉันได้รับเวลา
รหัสที่เกี่ยวข้องเท่านั้นที่ฉันสามารถให้ได้คือวิธีที่ฉันคำนวณเวลาเดลต้า:
prevTime = curTime;
curTime = (new Date()).getTime();
deltaTime = curTime - prevTime;
เมื่อคำนวณการเคลื่อนไหว / แอนิเมชันฉันจะคูณค่าคงที่กับเวลาของเดลต้า
หากไม่มีวิธีหลีกเลี่ยงการรับเวลาเป็นมิลลิวินาทีโดยใช้วัตถุวันที่จะมีฟังก์ชั่นที่เพิ่มตัวแปร (เป็นเวลาที่ผ่านไปเป็นมิลลิวินาทีนับตั้งแต่เริ่มเกม) และเรียกใช้ฟังก์ชัน SetTimer ในอัตรา ทุกหนึ่งมิลลิวินาทีเป็นทางเลือกที่มีประสิทธิภาพและเชื่อถือได้หรือไม่
แก้ไข: ฉันได้ทดสอบแล้วตอนนี้รหัสของฉันในเบราว์เซอร์ที่แตกต่างกันและดูเหมือนว่า "ข้าม" นี้จะปรากฏใน Chrome เท่านั้นไม่ใช่ใน Firefox แต่มันจะยังดีถ้ามีวิธีที่ใช้ได้กับเบราว์เซอร์ทั้งสอง
Date.getMillisecondsส่งกลับเฉพาะมิลลิวินาทีในวินาทีปัจจุบันคือ 0 ถึง 999 หรือไม่ คุณไม่ได้ใช้ฟังก์ชั่นนี้ในตัวอย่างของคุณ แต่บางทีมันอาจจะถูกใช้ที่อื่นหรือในสาขาอื่น?