Portolása JavaScript requestAnimFrame a géppel

szavazat
4

Én jelenleg ragadt próbál port a kód géppel.

if (typeof window !== 'undefined') {
  window.requestAnimFrame = (function(callback){
      return window.requestAnimationFrame ||
      window.webkitRequestAnimationFrame ||
      window.mozRequestAnimationFrame ||
      window.oRequestAnimationFrame ||
      window.msRequestAnimationFrame ||
      function(callback){
          window.setTimeout(callback, 1000 / 60, new Date().getTime());
      };
  })();
}

A TSC hiba kapok:

mellékelt paraméterek nem egyeznek minden aláírás hívás cél

Megpróbáltam nyilvánítják interface WindowEx extends Windowtartalmazó aláírásokat, akkor öntés (< WindowEx>window).xxx, de kétlem, hogy ez a helyes út-hoz megtérít ez a „tipikus” kódot.

Kísérlet:

interface WindowEx extends Window {
  requestAnimFrame(callback, target?):number;
  webkitRequestAnimationFrame(callback, target?):number;
  mozRequestAnimationFrame(callback, target?):number;
  oRequestAnimationFrame(callback, target?):number;
  // msRequestAnimationFrame already at WindowAnimationTiming interface
}
A kérdést 04/10/2012 10:43
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
2

Itt van, amit tettem, hogy megkapja a kódot összeállítani. Csak meghatározott requestAnimFrame()globális és gépelt úgy, hogy géppel lehet érvényesíteni hívásokat is. Ott nem olyan nagy út meghosszabbításának beépített típusok, mint a windowjelenleg ezért van szükség, hogy a dolgokat, mint a (<any>window).webkitRequestAnimationFrame. Az általános szabály az, hogy a fordító panaszkodik, és tudod, hogy ez érvényes JavaScript akkor mindig a leadott <any>, hogy működik.

var requestAnimFrame: (callback: () => void) => void = (function(){ 
  return window.requestAnimationFrame || 
  (<any>window).webkitRequestAnimationFrame || 
  (<any>window).mozRequestAnimationFrame || 
  (<any>window).oRequestAnimationFrame || 
  window.msRequestAnimationFrame || 
  function(callback){ 
      window.setTimeout(callback, 1000 / 60, new Date().getTime()); 
  }; 
})(); 
Válaszolt 04/10/2012 17:12
a forrás felhasználó

szavazat
0

Az ok a mellékelt paraméterek nem egyeznek aláírása hívás célpontja azért van, mert te egy funkció, mint ez:

(function(callback) { ... })();

Azaz a függvény elfogad callback, de nem halad egyet.

Meg kell eltávolítani callback, mint a paraméter, mert éppen nem használja sehol a funkciót.

Válaszolt 04/10/2012 12:34
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more