Corona SDK中的composer和覆盖层。

我只是在尝试使用composer.showOverlay()来显示游戏结束,暂停菜单等。

当场景结束(计时器归零等)时,我使用composer.showOverlay(“gameoverlay”,options)调用覆盖层,但是我收到一个错误告诉我正在尝试调用错误的模块,例如我的pause.lua格式不正确。看起来是这样的:

local composer = require(“composer”)
local scene = composer.newScene()
local myData = require(“myData”)

-——————————————————————————————————————————————— ————————————————
- 监听器函数之外的所有代码将仅在“composer.removeScene()”未被调用时执行一次。
-——————————————————————————————————————————————— ————————————————

- 本地转发引用应在此处

-——————————————————————————————————————————————— ————————————————

- "scene:create()"函数场景:隐藏(事件)
function scene:hide(event)
  local sceneGroup = self.view
  local phase = event.phase
  local parent = event.parent  -引用父场景对象

  if(phase ==“will”)then
      - 在父场景中调用“resumeGame()”函数

  end
end

- 通过某种方法(例如“恢复”按钮)隐藏覆盖层
- composer.hideOverlay(“fade”,400)

scene:addEventListener(“hide”,scene)
返回场景

    local sceneGroup = self.view

    - 在此处初始化场景。
    - 例如:将显示对象添加到“sceneGroup”,添加触摸侦听器等

    local background = display.newRect(0,0,display.actualContentHeigh,display.actualContentWidth
    background:setFillColor(黑色))

-————————————————————————————————————————————————— ——————————

- 监听器设置

-————————————————————————————————————————————————— ——————————

return scene

这远非我使用的gameoverlay.lua的唯一版本。我也尝试过使用composer场景的正常设置。 场景:创建 场景:显示 场景:隐藏 场景:销毁。

仍然收到相同的错误,看起来像

尝试从无效场景模块(gameoverlay.lua)中加载场景。您是否忘记在场景模块的最后返回场景对象? (例如'return scene')
尝试从无效场景模块(gameoverlay.lua)中加载场景。您是否忘记在场景模块的最后返回场景对象? (例如'return scene'
点赞
用户2276554
用户2276554

你的代码有两处return,所以创建sceneGroup的部分不会被执行。其次,我认为 Lua 会抛出一个错误,导致这个模块不能被加载,因此场景永远不会被返回,进而导致你的错误。

2014-04-19 13:23:45
用户3063055
用户3063055

问题

我正在尝试通过composer.showOverlay()运行的gameoverlay.lua文件是一个空文件,并且我正在工作的gameoverlay.lua文件被放置在了错误的目录下,造成了主要问题。

如果使用composer.gotoScene()运行,我会收到一个错误,指出"sceneName"nil值(因为它是空的)。

解决方案

确保文件不为空,并且需要composer,并设置正确的composer场景。

2014-04-22 16:30:31