#javascript #angular #typescript
Вопрос:
Я немного новичок в машинописи, но знаю JavaScript раньше. У меня есть код для мини-игры с колесом для моего приложения, и я получаю следующую ошибку на своей консоли.
this.easeOut is not a function
Код следующий (только то, что важно для проблемы, я думаю):
spin() {
const spinAngleStart = Math.random() * 10 10;
this.spinTime = 0;
this.spinTimeTotal = Math.random() * 3 4 * 1000;
this.rotateWheel(spinAngleStart);
}
rotateWheel(spinAngleStart: number){
this.spinTime = 30;
if(this.spinTime >= this.spinTimeTotal) {
this.stopRotateWheel();
return;
}
*const spinAngle = spinAngleStart - this.easeOut(this.spinTime, 0, spinAngleStart, this.spinTimeTotal);*
this.startAngle = (spinAngle * Math.PI / 180);
this.drawRouletteWheel();
console.log(this.spinTimeTotal);
console.log(this.spinTime);
this.spinTimeout = setTimeout(this.rotateWheel, 30);
}
easeOut(t, b, c, d) {
const ts = (t /= d) * t;
const tc = ts * t;
console.log(ts);
console.log(tc);
return (b c * (tc -3*ts 3*t));
}
Как вы можете видеть, easeOut() действительно существует в той же иерархии моей функции rotateWheel() и всего остального, если не отправляет никаких ошибок, поэтому я не понимаю, почему он отправляет ошибку.
сообщение об ошибке отправляется в строку со звездочками
Ответ №1:
Ты либо хочешь setTimeout(() => this.rotateWheel(), 30)
, либо setTimeout(this.rotateWheel.bind(this), 30);
. В противном случае, когда rotateWheel
вызывается, this
привязывается к window
объекту (или global
объекту в узле).
Комментарии:
1. Большое спасибо, теперь все исправлено! 😀
2. @OmarTorres пожалуйста, примите это как свой ответ. Так что никому не нужно искать помощи в этой теме