Quindi sono stato un buon cittadino netto, utilizzando la funzione di rilevamento per vedere se il browser supporta requestAnimationFrame
e ricade solo in una soluzione basata su setTimeout
altrimenti (qualcosa intorno alle righe di Paul Irish's famous post).requestAnimationFrame sta passando i parametri imprevisti in IE10
var NOW = Date.now || function() { return new Date.getTime(); };
var reqAnimFrame =
window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
/* ... || */
function (callback) {
setTimeout(function() { callback(NOW()); }, 1000/60);
};
var previousTime = NOW();
function animStep(time) {
var timePassed = time - previousTime;
myCharacter.move(myCharacter.speed * timePassed);
previousTime = time;
reqAnimationFrame(animStep);
}
// start the animation
reqAnimationFrame(animStep);
Questo ha funzionato benissimo fino a quando non è arrivato Internet Explorer 10. In IE10, il parametro time
trasmesso non sembra avere nulla a che fare con l'ora corrente, rovinando il calcolo di timePassed
.
Cosa sta succedendo?
piuttosto sorprendentemente ... quella sarebbe stata la prima volta che * Internet Explorer * si discosta dalle specifiche. Sono scioccata! – jAndy
@jAndy Beh, in questo caso, si potrebbe dire che sono in vantaggio rispetto agli altri browser in * seguendo * it. – balpha
E questo è esattamente il punto: IE ha incasinato per anni e ora stanno cercando di essere bravi ragazzi seguendo rigorosamente gli standard. Spero che si compensi in futuro. – Sander