You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开发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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 15:20:26