同一类中的 JavaScript 调用方法未定义?

标签 javascript class methods undefined

所以我对 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);
  }
}

预先感谢任何可以提供帮助的人!

最佳答案

引用类成员需要使用 this 关键字。

就您而言:

playerImage.x = this.lerp(currentXPos, xMousePosition, 0.1);
playerImage.y = this.lerp(currentYPos, yMousePosition, 0.1);
<小时/>

如果您使用 RecordInputs 作为事件监听器(如注释中建议的那样),您可能还需要将此构造函数添加到您的类中以正确绑定(bind) this:

constructor() {
    this.RecordInputs = this.RecordInputs.bind(this);
}

关于同一类中的 JavaScript 调用方法未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53305090/

相关文章:

c++ - 三元运算符将类扩展宏应用于两个操作数

ruby - 是否有 ruby​​ 方法可以在其他字符串之间选择字符串?

javascript - Struts2如何在jsp中获取ActionError计数

javascript - 从 networkD3 的 forceNetwork 调整绘图的背景图片和标题

javascript - 如何获取openfire服务器中所有房间的列表

java - 如何在另一个方法中包含返回的字符串 - java

c++ - SFINAE 示例不起作用

javascript - GeoXML3 不返回任何地标

C++ 创建和使用类

ios - 如何将方法中的 SKSpriteNode 添加到另一个类中?