我正在用JavaScript写我的第一个项目。据我所知,Math.atan()返回一个数字(以弧度表示的角度)。但不知何故,它返回了Nan。
使用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);
}我是第一次接触这门语言,我是不是错过了什么?
发布于 2019-08-31 03:55:47
还有一种“聪明”的方法,它利用JS的泄漏赋值,并使用额外的顶级变量来存储对象文字之外所需的属性:
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);https://stackoverflow.com/questions/57732489
复制相似问题