Replit使用Kaboom框架按空格报错Soldier未定义,求修复方案
修复Kaboom框架中「Soldier not defined」错误的方案
错误原因很明确:你在空格键的回调里调用Soldier.jump(),但代码里根本没定义过Soldier变量。add()函数会返回你创建的角色游戏对象,但你只是直接调用add(),没有把返回值存到变量里,所以全局上下文找不到这个标识符。
修复方法很简单,只需要一步关键改动:
- 将创建角色的
add()调用结果赋值给Soldier变量,确保变量作用域覆盖到按键回调函数
修改后的完整代码:
import kaboom from "kaboom" // initialize context kaboom() // load assets loadSprite("Soldier", "sprites/Soldier.png") // 把角色对象赋值给Soldier变量 const Soldier = add([ // list of components sprite("Soldier"), pos(80, 40), area(), body() ]) // add platform add([ rect(width(), 48), pos(0, height() - 48), outline(4), area(), solid(), color(170, 150, 0), ]) onKeyPress("space", () => { Soldier.jump() }) // burp on "b" onKeyPress("b", burp)
改动核心就是给add()的返回值赋值const Soldier,让变量指向你的角色对象,这样按键回调里就能正常调用jump()方法了。
内容的提问来源于stack exchange,提问作者Mikey89
相关产品推荐
相关产品推荐

