このコードは機能していますが、改善したいと思います。
var c = canvas.getContext("2d");
//this is called as an object method I created
var animar = function () {
var obj = this;//saves the object that called it to later access to its properties
var counter= 0;
var animacion = setInterval(function(){
c.save()
c.clearRect(0, 0, canvas.width, canvas.height);
c.rotate(0.1*counter);
obj.pintar();
c.restore();
counter++;
}, 50);
}
将来的に使用できるように外部関数を使用したいのですが、コードを変更すると巻き上げの問題が発生し、常に上書きせずに rotar() 関数内のカウンターを取得する方法がわかりません。 :
var animar = function () {
var obj = this;
var counter= 0;
var animacion = setInterval(function(){
rotar(obj)
}, 50);
}
function rotar (obj) {
c.save()
c.clearRect(0, 0, canvas.width, canvas.height);
c.rotate(0.1*counter);
obj.pintar();
c.restore();
counter++;
}
最初の例はネストされているため機能しますが、2 番目の例はそうではありません。GLOBAL VARIABLEを使用せずに setInterval のカウンターを取得するにはどうすればよいですか? (つまり... もう一度呼び出すと、0 で開始されません。animar() 関数で 0 に設定すると機能しますが、0 に設定する必要があります。カウンターを使用する、または異なる名前のカウンターを使用するすべての関数で.この2つの可能性はうまく聞こえません.)ありがとう