28

メイン プログラムでは、アニメーション化するオブジェクトをランダムに選択するので、そのオブジェクトを引数として関数を呼び出します。最初のループは大丈夫xです、細かく設定されていますが、次のターンではundefined.

このようなもの:

var anim = {
        mainFunc: function(x) {
            anim.update(x);
            anim.redraw(x);
            window.requestAnimationFrame(anim.mainFunc);
        },

        update: function(x) {

        },

        redraw: function(x) {

        }
};

var n=Math.floor(Math.random() * (ArrayOfAnimObject.length));
anim.mainFunc(ArrayOfAnimObject[n]);
4

3 に答える 3

44

次のように、参照を作成するか、関数呼び出しを別の関数でラップする必要があります。

mainFunc: function(x) {
    anim.update(x);
    anim.redraw(x);
    window.requestAnimationFrame(function() {
        anim.mainFunc(x);
    });
}
于 2013-11-10T18:29:27.667 に答える
24

も使用できます.bind

mainFunc: function(x) {
    anim.update(x);
    anim.redraw(x);
    window.requestAnimationFrame(anim.mainFunc.bind(anim,x));
}
于 2015-11-08T08:09:20.700 に答える