gpt4 book ai didi

javascript - 在javascript中访问对象变量

转载 作者:行者123 更新时间:2023-12-02 19:35:11 25 4
gpt4 key购买 nike

所以,我刚刚开始 javascript,一切都工作正常,直到我遇到对象。这种和平的代码应该用 javascript 在 html Canvas 中创建一个弹跳球,但它不起作用。

  var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");

//clear

function clear() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
}

这是我的球对象

//ball

var ball = {

x: canvas.width / 2,
getX: function() {
return this.x;
},
setX: function(a) {
this.x = a;
},

y: canvas.height / 2,
getY: function() {
return this.y;
},
setY: function(a) {
this.y = a;
},

mx: 2,
getMx: function() {
return this.mx;
},
setMx: function(a) {
this.my = a;
},
my: 4,

getMy: function() {
return this.my;
},

setMy: function(a) {
this.my = a;
},
r: 10,
getR: function() {
return this.r;
}

};

绘制我的球的代码

function drawBall()
{
ctx.beginPath();
ctx.arc(ball.getX, ball.getY, ball.getR, 0, Math.PI * 2, true);
ctx.fillStyle = "#83F52C";
ctx.fill();

}

function circle(x, y, r) {
ctx.beginPath();
ctx.arc(x, y, r, 0, Math.PI * 2, true);
ctx.fillStyle = "#83F52C";
ctx.fill();
}
//draws ball and updates x,y cords
function draw() {
clear();
drawBall();
if (ball.getX() + ball.getMx() >= canvas.width || ball.getX()+ ball.getMx() <= 0) {
ball.setMx(-ball.getMx());
}
if (ball.getY() + ball.getMy() >= canvas.height|| ball.getY()+ ball.getMy() <= 0) {
ball.setMy(-ball.getMy());
}

ball.setX(ball.getX() + ball.getMx());
ball.setY(ball.getY() + ball.getMy());

}

设置间隔

function init() {
return setInterval(draw, 10);
}

init();

最佳答案

使用 this 引用调用该方法的对象的属性。

var ball = {

x: canvas.width / 2,
getX: function() {
return this.x;
},
setX: function(a) {
this.x = a;
},

y: canvas.height / 2,
getY: function() {
return this.y;
},
setY: function(a) {
this.y = a;
},

mx: 2,
getMx: function() {
return this.mx;
},
my: 4,
getMy: function() {
return this.my;
},
r: 10,
getR: function() {
return this.r;
}
};

此外,要调用方法,您需要使用()

ctx.arc(ball.getX(), ball.getY(), ball.getR(), 0, Math.PI * 2, true);

否则,您将传递该方法而不是调用该方法的结果。

关于javascript - 在javascript中访问对象变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11005804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com