私は自分自身にjavascriptを教えようとしているので、HTML5とキャンバスを使ってプロジェクトを行うことにしましたが、わからないコードのバグを見つけました。コンテキストを変数cとして宣言しますが、cを参照する関数やオブジェクト定義では、c.beginPath()などは定義されていないものとして表示されます。しかし、もしそのような参照が関数の外で動作するならば。私はキャンバスのオンラインチュートリアルにかなり近づいています。私がやっていることと、チュートリアルが行っていることが私のコードを実行しないようにしていることの違いはわかりません。私のコードの大部分は下にあり、drawメソッドへの呼び出しは私に問題を与えているものです。どんな助けもありがとう!Javascript Canvas + objects/functions
var canvas = document.querySelector('canvas');
var w = window.innerWidth;
var h = window.innerHeight
canvas.width = w;
canvas.height = h;
var c = canvas.getContext('2d');
// circle object
function Circle(x, y, dx, dy, r, color) {
this.x = x;
this.y = y;
this.dx = dx;
this.dy = dy;
this.r = r;
this.color = color;
this.draw = function() {
c.beginPath();
c.arc(this.x, this.y, this.r, 0, 2 * Math.PI, false);
c.strokeStyle = this.color;
c.stroke();
c.fill();
}
this.update = function() {
if (this.x + this.r > w || this.x - this.r < 0) {
this.dx = -this.dx;
}
if (this.y + this.r > h || this.y - this.r < 0) {
this.dy = -this.dy;
}
this.x += this.dx;
this.y += this.dy;
this.draw();
}
}
<canvas></canvas>
また、あなたのコード与えられ、これが唯一の円の境界線を描画します。 内部をペイントしたい場合は、c.fillStyle = 'somecolor'を変更する必要があります – simon
適切なオブジェクト指向の仕組みを実際に学習したいと思っていますので、グローバル参照をすべて削除してすべてがクラス内に含まれています。 https://jsfiddle.net/hdx799py/ さらに詳しく知りたい場合は、HTML自体からキャンバスを完全に削除して、javascript内に作成してください。 – simon