小编Mig*_*ula的帖子

CreateJS createjs.Ticker.off("tick", element.update) 不起作用

我正在制作一个射击游戏,我需要通过将它们绑定到 'tick' 事件来更新子弹的状态,但是当调用 remove 方法将它们从 'tick' 事件中删除时,它不会删除它。创建一个新实例后,它会不断更新,而不是绑定的那个。

方法 'add'/'remove' 用于从 'tick' 事件绑定/解除绑定方法

class window.Stage

  stage = undefined
  counter = 0
  fps = 60

  add: (element) =>
    element.id = counter++
    stage.addChildAt(element.view, element.id)
    element.listener = createjs.Ticker.on("tick", element.update)

  remove: (element) =>
    createjs.Ticker.off("tick", element.listener) # Not removing!
    stage.removeChildAt(element.id)

  update: () =>
    stage.update()
Run Code Online (Sandbox Code Playgroud)

这就是我在 Game 类中调用 remove 方法的方式

  run: () => 

    if @gun? && !@gun.alive
      @stage.remove(@gun)
      @gun = undefined

    if @player.shooting() && !@gun?     
      @gun = @player.shoot() # Ticker keeps updating new instance
      @stage.add(@gun)

    for bunker …
Run Code Online (Sandbox Code Playgroud)

javascript event-listener coffeescript createjs

0
推荐指数
1
解决办法
1625
查看次数