2013-07-05 141 views
1

嗨,我試圖使用requestAnimationFrame爲我的遊戲,我實際上使用下面的代碼,但正如你可以看到「.bind()」創建每個循環一個新的功能,減緩我的遊戲。 ..我正在尋找一個最好的性能比較一個「有效」的解決方案,預先感謝您:drequestAnimationFrame對象類型錯誤

function myClass() { 
    this.loop = function() { 
    window.requestAnimationFrame(this.loop.bind(this)); 

    /* here myGameLoop */ 
    } 

    this.loop(); 
} 

上面的代碼的作品,但速度很慢..而不是此「標準」的代碼給我「類型錯誤」 :

window.requestAnimationFrame(this); 

我甲肝E也發現é試過這種問答&答:requestAnimationFrame attached to App object not Window作品只是一次再給予相同的「類型錯誤」 :(

嘗試,如果你不相信我:http://jsfiddle.net/ygree/1:'(

回答

1

不知道整個你的對象的故事(還有什麼);你可以通過只是在做這個生活簡單化:

function myClass() { 

    var iHavAccessToThis = 1; 

    function loop() { 

     iHavAccessToThis++; 

     /* here myGameLoop */ 

     requestAnimationFrame(loop); 
    } 
    loop(); 

    //if you need a method to start externally use this instead of the above line 
    this.start = function() { loop() } 

    //... 
    return this; 
} 

現在你不需要綁定任何東西,你訪問本地範圍是快。

然後調用:

var class1 = new myClass(); 
class1.start(); 
+0

因爲我正在寫一個HTML5的框架,你建議的方式,我要重複所有的「外部可用」的方法和屬性。 所以...如果我有100個屬性/方法,我必須編寫其他100個方法來返回這個屬性...不是很好嗎?無論如何感謝您的幫助 –

+1

@ user2488460聽起來像一個巨大的項目。如果您發現它有幫助,請考慮upvote /接受答案。 – K3N

+0

這不是我的第一個html5框架;)但是我仍然在爲這個問題尋找更好的解決方案:'( –

相關問題