私はJS魔法の作品で単純なクラスを書きましたが、setIntervalを使ってみると問題がありました。 Ex。もし私がそのようなことをすれば、jsクラスのSetIntervalプロパティがありません
ball = new ball(5,10,0, '#canvas');
ball.draw();
ball.draw();
ball.draw();
ball.draw();
それは働く。しかし、これは:
ball = new ball(5,10,0, '#canvas');
setInterval(ball.draw, 100);
値が定義されていないというエラーが表示されます。あなたがball
のコンテキストから呼び出されgetingされていない関数自体への参照を送っているので、それを推測
function ball (x,y,z,holdingEl) {
this.r = 5; //zmienna przechowujaca promien pilki
this.size = this.r *2; // zmienna przechowujaca rozmiar
this.ballSpeed = 100; // predkosc pilki
this.ballWeight = 0.45; // masa pilki
this.maxFootContactTime = 0.2; // maksymalny czas kontaktu pilki z noga - stala
this.ctx = jQuery(holdingEl)[0].getContext("2d"); // obiekt pilki
this.intVal = 100 // predkosc odswiezania
this.currentPos = { // wspolrzedne pozycji
x: x,
y: y,
z: z
}
this.interactionPos = { // wspolrzedne pozycji ostatniej interakcji
x: -1,
y: -1,
z: -1
}
this.direct = { // kierunek w kazdej plaszczyznie
x : 1,
y : 0,
z : 0
}
this.draw = function(){
this.ctx.clearRect(0,0,1100,800);
this.ctx.beginPath();
this.ctx.arc(this.currentPos.x, this.currentPos.y, this.r, 0, Math.PI*2, true);
this.ctx.closePath();
this.ctx.fill();
}
}
をお試しください –
「ボール」の複数のインスタンスを作成する場合は、インスタンス間で共有されるように、 'ball'の' prototype'に 'draw'関数を追加する必要があります。今はインスタンスごとに冗長な関数を作成しています。 – user113716
'ball = new ball(...);'インスタンスでコンストラクタ関数を上書きしていませんか? –