我想用box2dweb用coffeescript来创建一个简单的游戏。设置物理工作正常,更新正常,但当试图在更新循环中调用我自己的函数时,我得到这个错误'undefined不是函数(评估this.batman()
)'(batman
是函数名)。在运行之前,我正在编译为JavaScript。 这是我第一次使用coffeescript,所以我可能会做一些愚蠢的事情。未定义是不是一个函数,当评估'this.batman()'
这里是我的代码:
root = exports ? this
root.world = null
class Game
class Game
canvasHeight: 450
canvasWidth: 800
canvas: null
drawingContext: null
constructor: ->
@createCanvas()
@resizeCanvas()
@createDrawingContext()
@initPhysics()
createCanvas: ->
@canvas = document.createElement 'canvas'
document.body.appendChild @canvas
resizeCanvas: ->
@canvas.height = @canvasHeight
@canvas.width = @canvasWidth
createDrawingContext: ->
@drawingContext = @canvas.getContext '2d'
initPhysics: ->
#physics setup removed for brevity
window.setInterval(@update, 1000/60)
batman: ->
alert "whatever"
update: ->
root.world.Step(1/60, 10, 10)
root.world.DrawDebugData()
root.world.ClearForces()
@batman()
window.Game = Game
看起来你的缩进是错误的。课堂内的所有内容都应该缩进。 – elclanrs
你不能只调用'蝙蝠侠',你需要首先实例化'BatSignal',然后使用'BatSignal.Call(蝙蝠侠)'。 – 2013-07-17 01:59:09