开发JavaScript吃豆人游戏时遇Uncaught TypeError错误求助
问题排查:Uncaught TypeError: Cannot read properties of undefined (reading 'draw')
核心原因
错误指向pacman.draw(ctx, pause(), enemies)这一行,说明**pacman变量是undefined**,根本找不到draw方法可调用。
逐步排查步骤
先查
titleMap.getPacman(velocity)的返回值
你的pacman是通过这个方法获取的,必须确保它能正确返回Pacman实例:- 打开
TheMap类的代码,检查getPacman方法有没有写return语句,比如是不是漏了返回new Pacman(...)的结果; - 确认地图初始化时,是否正确标记了Pacman的初始位置,避免方法因为找不到坐标而返回
undefined。
- 打开
加调试代码确认状态
在gameLoop函数开头加一行日志,直接看pacman的实际值:console.log('当前pacman状态:', pacman);运行后看控制台,如果输出
undefined,就坐实了第一步的问题。顺带检查
pause函数的隐患pause里用到了pacman.madeFirstMove,如果pacman是undefined,这行其实也会报错,只是当前错误先触发了。等pacman的问题解决后,要确保madeFirstMove属性在Pacman类里有初始化。
额外注意点
- 确认
Pacman类的draw是实例方法(不是静态方法),并且构造函数里正确初始化了pacmanImages、tileSize这些draw方法要用到的属性; - 后续还要检查
enemies变量是否已正确定义,不然enemies.forEach也可能出类似的undefined错误。
内容的提问来源于stack exchange,提问作者Galya
相关产品推荐
相关产品推荐

