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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 04:50:25