我想在Javascript中做更多的OOP。 我不明白的一件事是我如何修改另一個函數中的對象內的變量?如何更改Javascript中函數內的變量值?
以下是我試圖做到這一點:
function Ball(){
radius = 5;
Y = 20;
X = 25; // The value i would like to change.
ctx.arc(this.X, this.Y, this.radius, 0, Math.PI*2, true);
ctx.fillStyle = '#00ff00';
ctx.fill();
}
function draw(){
Player();
Ball();
}
function update(){
ctx.clearRect(0, 0, 800, 400);
draw();
Ball.X++; // This is where i want to modify the value.
}
到目前爲止,我只能夠這樣做,如果我定義X作爲一個全局變量,但我不想這樣做,因爲有其他X和Y值。
那麼我將如何從函數外部訪問變量?
編輯: 由「NNNNNN」所提供的解決方案工作的程度,它改變X值,但我跑進另一個問題。 我的clearRect不清除動畫,所以不是一個球而是繪製一條剛剛長出的線。
這是代碼看起來像現在:
function Ball(){
this.radius = 5;
this.Y = 20;
this.X = 25;
this.draw = function() {
ctx.arc(this.X, this.Y, this.radius, 0, Math.PI*2, true);
ctx.fillStyle = '#00ff00';
ctx.fill();
};
}
var ball = new Ball();
function draw(){
Player();
ball.draw();
}
function update(){
ctx.clearRect(0, 0, 800, 400);
draw();
ball.X++;
}
我試圖移動它,將它無論是在平局()和ball.draw()函數,但仍然得到同樣的結果,我也嘗試做一個fillRect而不是清除,但它沒有幫助。 任何人都能看到最新的錯誤?
沒有不好的感覺,但我寧願學會在跑步之前走路。你的代碼看起來不是很有雄心壯志。你沒有處理一個實例/對象,你只是在一個函數中有變量(甚至不是本地的)。 – jAndy 2012-03-16 10:56:41
是的,他們曾經是this.X和this.Y等,但由於這些是本地我試圖讓全球變化:D – justanotherhobbyist 2012-03-16 12:16:20