所以我对js来说还比较陌生,我想在我的'recordInputs'类中调用一个方法'lerp'。 recordInputs类在其他地方调用,并且无需lerp函数即可正常工作。问题在于,当playerImage.x / y等于lerp函数时,会出现控制台错误,并指出“ lerp”方法未定义...
这是代码:
class PlayerMoveClass {
lerp(start, end, time) {
return (1-time) * start + time * end;
}
RecordInputs(event) {
currentXPos = playerImage.x;
currentYPos = playerImage.y;
xMousePosition = event.clientX;
yMousePosition = event.clientY;
playerImage.x = lerp(currentXPos, xMousePosition, 0.1);
playerImage.y = lerp(currentYPos, yMousePosition, 0.1);
console.log("X POS: " + playerImage.x + " Y POS: " + playerImage.y);
}
}
在此先感谢任何可以提供帮助的人!
答案 0 :(得分:4)
引用类成员需要使用this
关键字。
在您的情况下:
playerImage.x = this.lerp(currentXPos, xMousePosition, 0.1);
playerImage.y = this.lerp(currentYPos, yMousePosition, 0.1);
如果您将RecordInputs
用作事件监听器(如注释中所建议),则可能还需要将此构造函数添加到您的类中才能正确绑定this
:
constructor() {
this.RecordInputs = this.RecordInputs.bind(this);
}