Tôi đang phát xung quanh với số requestAnimationFrame
nhưng tôi nhận được các hoạt ảnh rất khó khăn trong bất kỳ trình duyệt nào khác ngoài Chrome.Đạt được tốc độ khung hình hơi ổn định với requestAnimationFrame?
tôi có thể tạo một đối tượng như thế này:
var object = function() {
var lastrender = (new Date()).getTime();
var delta = 0;
return {
update: function() {
//do updates using delta value in calculations.
},
loop: function() {
var looptimestamp = (new Date()).getTime();
delta = looptimestamp - lastrender;
lastrender = looptimestamp;
this.update();
window.requestAnimationFrame(this.loop.bind(this));
}
};
}
Ngay bây giờ tôi chỉ vẽ một hình chữ nhật duy nhất trên một yếu tố canvas và di chuyển nó xung quanh. Nó là một hoạt động rất nhẹ trên bộ vi xử lý. Điều này đang chạy khá trơn tru trong Chrome và khi tôi điều khiển ghi lại giá trị delta, nó gần như là đồng nhất quanh ~ 17. Tuy nhiên, nếu tôi làm như vậy trong Firefox hoặc Safari tôi nhận được các giá trị châu thổ sau:
17-3-17-2-32-34-32-31-19-31-17-3-0-14-3-14-35-31-16-3-17-2 ... and so on
Có vẻ như nếu trình duyệt không đồng bộ hóa với màn hình rất độc đáo, và trong mọi trường hợp khác ngoài Chrome, người ta sẽ có hình động mượt mà hơn bằng cách sử dụng phương pháp setTimeout cũ với 16ms làm thời gian chờ mục tiêu.
Có ai biết không, nếu có thể có hoạt ảnh mượt mà hơn bằng cách sử dụng requestAnimationFrame
trong các trình duyệt không phải Chrome? Có ai đã thành công trong việc nhận được giá trị đồng bằng ổn định hơn so với những giá trị được đăng ở trên trong Firefox không?
bạn đang làm phim hoạt hình nào? đề nghị làm một jsfiddle. – Raptor
Làm thế nào về việc thử nghiệm với 'performance.now()' thay vì 'new Date(). GetTime()'? Tôi nghi ngờ rằng độ phân giải của bộ đếm thời gian sẽ nằm trong phạm vi 2ms ... –
Không có gì thú vị vào lúc này, tôi có một ứng dụng di chuyển khá nhiều xung quanh, và tôi đang tìm cách di chuyển loại hoạt ảnh này sang yếu tố canvas. Nhưng ngay bây giờ tôi chỉ đang cố gắng để có được một hình ảnh động trơn tru chạy. – acrmuui