0

申し訳ありませんが、私はjsの完全な初心者であり、オブジェクトインスタンスと関数の基本を把握していると思っていましたが、何をすべきかを理解する方法がわかりません。

次のように GameLoop 関数/オブジェクトを宣言しました。

function GameLoop() {

    window.requestAnimationFrame = 
            window.requestAnimationFrame || /* Firefox 23 / IE 10 / Chrome */
            window.mozRequestAnimationFrame || /* Firefox < 23 */
            window.webkitRequestAnimationFrame || /* Safari */
            window.msRequestAnimationFrame || /* IE  */
            window.oRequestAnimationFrame; /* Opera */

    this.start = function() {
        this.update();
    };

    this.update = function() {
        this.processInput();
        this.updateState();
        this.updateGraphics();
        window.requestAnimationFrame(this.update);
    };

    this.processInput = function() {
        alert("pi");
    };

    this.updateState = function() {
        alert("us");
    };

    this.updateGraphics = function() {
        alert("ug");
    };  

};

私はこのように実行しようとしています:

$(document).ready(main);

        function main() {
            var gameLoop = new GameLoop();
            gameLoop.start();
        }

「processInput」、「updateStaten」、および「updateGraphics」関数のそれぞれが 1 回呼び出されますが (それぞれのアラートが表示されるのを確認できます)、その後停止し、(Firefox のエラー コンソール内で) エラーが発生します。

Error: TypeError: this.processInput is not a function

this.processInput()関数内の行を指しupdateます。

特に関数が初めて呼び出されるので、理由がわかりません。誰でも助けてもらえますか?

4

1 に答える 1