Итак, я пишу игру на JS Canvas и создаю свой собственный графический интерфейс с нуля. Для этого я создал объект button
с полями x, y, width, height
и intersects(click_event)
. По какой-то причине, когда я непосредственно помещаю это выражение для x
, оно возвращает NaN
, хотя выражение работает везде.
Это простая игра на холсте. Я знаю, что, возможно, мог бы использовать какой-то подвох, чтобы обойти это, но я хочу сохранить свой код в чистоте. Я просто не понимаю, почему это не сработает.
var button = {
height:80,
width:200,
x:canvas.width/2 - this.width/2, //this is the problem
y:200,
//other stuff
};
console.log(button.x); //this prints "NaN"
console.log(canvas.width/2 - button.width/2); //prints correct num
Ширина холста равна 1000, поэтому 1000/2 - 200/2 должны равняться 400, что и происходит при вызове внутри console.log
.
Но когда я помещаю его внутрь button.x
, оно оценивается как NaN
.