Μεταφορά Javascript για requestAnimFrame με γραφομηχανή

ψήφοι
4

Είμαι σήμερα κολλήσει προσπαθώντας να λιμάνι αυτόν τον κωδικό για να γραφομηχανή.

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());
      };
  })();
}

Το σφάλμα TSC που παίρνω είναι:

παρεχόμενο παράμετροι δεν ταιριάζει με κανένα υπογραφή του στόχου κλήσης

Έχω δοκιμάσει δηλώνοντας ένα interface WindowEx extends Windowπου περιέχει τις υπογραφές, στη συνέχεια, τη χύτευση σε (< WindowEx>window).xxx, αλλά αμφιβάλλω αυτός είναι ο σωστός τρόπος για να μετατρέψει αυτό το «τυπικό» κώδικα.

Μια προσπάθεια:

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
}
Δημοσιεύθηκε 04/10/2012 στις 10:43
πηγή χρήστη
Σε άλλες γλώσσες...                            


2 απαντήσεις

ψήφοι
2

Εδώ είναι τι έκανα για να λάβετε τον κωδικό σας για την κατάρτιση. Απλά ορίζεται requestAnimFrame()ως μια παγκόσμια και πληκτρολογήσει έτσι ώστε γραφομηχανή θα μπορούσε να επικυρώσει κλήσεις σε αυτό. Δεν υπάρχει κάποια πολύ καλός τρόπος επέκτασης χτισμένο σε τύπους, όπως windowεπί του παρόντος, ως εκ τούτου την ανάγκη να κάνει πράγματα όπως (<any>window).webkitRequestAnimationFrame. Κατά γενικό κανόνα, εάν ο compiler παραπονιέται και να ξέρετε ότι είναι έγκυρο το JavaScript μπορείτε πάντα να ρίχνει για να <any>μπορεί να λειτουργήσει.

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()); 
  }; 
})(); 
Απαντήθηκε 04/10/2012 στις 17:12
πηγή χρήστη

ψήφοι
0

Ο λόγος για τα παρεχόμενα παραμέτρους δεν ταιριάζουν με την υπογραφή του στόχου κλήση είναι επειδή είστε καλώντας μια λειτουργία όπως αυτό:

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

Δηλαδή, η συνάρτηση δέχεται callback, αλλά δεν περνούν το ένα μέσα.

Θα πρέπει να αφαιρέσετε callbackως παράμετρο γιατί δεν το χρησιμοποιείτε οπουδήποτε στη λειτουργία.

Απαντήθηκε 04/10/2012 στις 12:34
πηγή χρήστη

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