【问题标题】:Composer: scene:show() is being called multiple times?作曲家:scene:show() 被多次调用?
【发布时间】:2014-05-10 06:06:56
【问题描述】:

所以基本上我在 Corona SDK 中使用 Composer 时遇到了问题。我有一个关卡,当满足失败条件时,它会运行一个 showOverlay 命令,该命令会弹出一个 Game Over 覆盖。我在scene:create() 函数中为叠加层创建了所有文本对象和按钮,效果很好。

问题出在这里,我在 scene:show() 函数中放置了一个 print 语句,在我的代码块中

if phase == "will" then end

文档声称scene:show 只被调用了两次,一次用于“will”阶段,一次用于“did”阶段。然而我的打印语句被打印到控制台几次,比如 15-20 次。事实上,我之前在其他情况下也注意到了这一点,这些事件回调函数被触发的次数似乎比预期的要多。

我是否遗漏了一些您必须做或添加到这些回调函数以使它们运行适当次数的东西?

【问题讨论】:

    标签: lua coronasdk


    【解决方案1】:

    嗯,我发现了问题...

    我有一个运行时“enterFrame”事件侦听器,它每帧都运行一个函数。我的丢失条件的 if 语句在这个函数中。 (如果livesRemaining == 0是实际情况)

    在这个函数中,我删除了“enterFrame”事件监听器,然后运行 ​​composer.showOverlay()。但是,似乎即使我取消了“enterFrame”事件侦听器,它仍然会在取消实际发生之前再触发与其关联的函数几次。这看起来好像叠加层的场景:显示被多次调用。实际上确实如此,但真正的原因是因为在实际取消运行时“enterFrame”事件侦听器之前多次调用了 composer.showOverlay() 函数。

    我认为删除 enterFrame 事件侦听器会立即执行此操作,但我想它会在实际执行之前再等待几个周期。也许他们会在未来的某个时候解决这个问题,这样我们就不必使用变通方法来让东西正常工作。

    【讨论】:

      猜你喜欢
      • 2017-05-09
      • 2014-12-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-07
      • 2013-06-04
      • 2017-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多