8

Ich erstelle Leinwand (ich bin neu zu diesem Canvas) Objekt Zylinder das funktioniert gut Chrome & Firefox aber wenn ich die gleiche Datei in ie9 öffnen.Error requestAnimationFrame in ie9 jede alternative Lösung

ich Fehler als ‚request‘ bin immer undefiniert

Wenn ich den Fehler google es sagt requestAniationFrame nicht auf ie9 arbeiten.

Kann mir irgendein Körper dabei helfen, haben wir einen alternativen Weg, dies zu lösen.

und hier ist mein Code

var canvas = document.getElementById("canvas"); 
     var context = canvas.getContext("2d"); 

     var degreeAngle = 0; 
     requestAnimationFrame(animate); 

     function drawRotatedCylinder(x, y, w, h, degreeAngle) { 
      context.save(); 
      context.translate(x + w/10, y + h/10); 
      context.rotate(degreeAngle * Math.PI/180); 
      drawCylinder(-w/10, -h/10, w, h); 
      context.restore(); 
     } 
function animate() { 
     //requestAnimationFrame(animate); 
     context.clearRect(0, 0, canvas.width, canvas.height); 
     drawRotatedCylinder(100, 100, 180, 180, degreeAngle++); 
} 

Bitte helfen Sie mir für die oben genannte Lösung

Dank Regards Maha

+1

https://gist.github.com/paulirish/1579671 – adeneo

+0

Sie haben wirklich nicht danach zu suchen, das hast du ?! –

+0

hi @ A.Wolff ich suchte wirklich, aber ich war nicht in der Lage, die Lösung zu finden – user3820621

Antwort

20

Erik Möller eine robuste Füllwatte entwickelt, Paul Irish jetzt in seiner blog post about requestAnimationFrame hostet. Wenn Sie diesen Code verwenden, können Sie in request ziemlich jedem Browser transparent:

(function() { 
    var lastTime = 0; 
    var vendors = ['webkit', 'moz']; 
    for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) { 
     window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame']; 
     window.cancelAnimationFrame = 
      window[vendors[x]+'CancelAnimationFrame'] || window[vendors[x]+'CancelRequestAnimationFrame']; 
    } 

    if (!window.requestAnimationFrame) 
     window.requestAnimationFrame = function(callback, element) { 
      var currTime = new Date().getTime(); 
      var timeToCall = Math.max(0, 16 - (currTime - lastTime)); 
      var id = window.setTimeout(function() { callback(currTime + timeToCall); }, 
       timeToCall); 
      lastTime = currTime + timeToCall; 
      return id; 
     }; 

    if (!window.cancelAnimationFrame) 
     window.cancelAnimationFrame = function(id) { 
      clearTimeout(id); 
     }; 
}()); 
+0

danke @ user1449556 es funktionierte gut – user3820621

+0

Gern geschehen;) – user1449556

+0

Das Problem gelöst, ich habe die oben genannten Javascript vor meinem Code legte es war in Ordnung ie9 danke noch einmal für alle – user3820621

Verwandte Themen