javascript - 同一类中的 Javascript 调用方法未定义?
问题描述
所以我对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
用作事件侦听器(如评论中所建议的那样),您可能还需要将此构造函数添加到您的类中以this
正确绑定:
constructor() {
this.RecordInputs = this.RecordInputs.bind(this);
}
推荐阅读
- python - 如何在 Python 中管理对可变属性的访问
- python - 在列表中搜索字符
- sql - 如何编写单个 SQL 查询以挑选出具有关于特征数量和特征优先级的多个条件的子组
- laravel - Laravel 5.6 自定义存储链接/挂载到 Windows 操作系统上的其他位置
- nim-lang - Nim ui (libui) 错误
- postgresql - pg_restore 警告:还原时忽略错误:62
- c# - 被推后移动时给玩家一些摩擦力
- java - 为什么 maven-jlink-plugin 崩溃?什么是非法论据?
- python - 如何在python中的双花括号中抓取特定数据
- c# - Net Core 2 Serilog 从控制台应用程序注入到 Webhost