我正在用 JavaScript 编写我的第一个项目。据我了解, Math.atan() 返回一个数字(以弧度表示的角度)。但不知何故,它返回了南。使用console.log(),我检查了所有变量(ry、rx、this.y、this.x),并且都是数字。但对于console.log(Bullet.q)我得到“NaN”。function createBullet(rx, ry){ let Bullet = kontra.Sprite({ x: player.x, y: player.y, v: 4, q: Math.atan((ry-this.y)/(rx-this.x)), // k: this.v/Math.sqrt((ry-this.y)*(ry-this.y)+(rx-this.x)*(rx-this.x)), //dx: (rx-this.x)*this.k, dx: Math.cos(this.q)*this.v, //dy: (ry-this.y)*this.k, dy: Math.sin(this.q)*this.v, }); console.log(ry); console.log(Bullet.q); console.log(Bullet.dy);}我是这种语言的新手,我错过了什么吗?
1 回答
largeQ
TA贡献2039条经验 获得超7个赞
还有一种“聪明”的方法可以通过利用 JS 的泄漏赋值并使用额外的顶级 var 来存储您需要的对象字面量之外的属性:
function createBullet(rx, ry){
var q,v;
let Bullet = kontra.Sprite({
x: player.x,
y: player.y,
v: v = 4,
q: q= Math.atan((ry-player.y)/(rx-player.x)),
dx: Math.cos(q)*v,
dy: Math.sin(q)*v,
});
console.log(ry);
console.log(Bullet.q);
console.log(Bullet.dy);
}
也就是说,我真的不喜欢聪明的代码,你可能想在文字之前计算这些属性,以获得更好的可读性。
可以内联使用 getter 的方式:
var obj = {
a: 1,
b: 2,
get sum() { return this.a+this.b}
};
alert(obj.sum);
分享
添加回答
举报
0/150
提交
取消