我有以下代码:

function scene:create( event )

  local sceneGroup = self.view

  -- Initialize the scene here.
  -- Example: add display objects to "sceneGroup", add touch listeners, etc.

  local options1 = {
    x = display.contentWidth / 2,
    y = 200,
    onRelease = button,
    lableAlign = "center",
    emboss = true,
    id = "1",
    label = "Button1"
  }

  local options2 = {
    y = 300,
    x = display.contentWidth / 2,
    onRelease = button,
    lableAlign = "center",
    emboss = true,
    id = "2",
    label = "Button2"
  }

  local button1 = widget.newButton(options1)
  local button2 = widget.newButton(options2)
  sceneGroup:insert(button1)
  sceneGroup:insert(button2)
end


当我将此代码放在独立文件(而不是场景)中时,按钮将按预期显示。但是现在我将这个独立文件变成一个场景,由于某种原因,上面的代码在模拟器中什么都没有产生。有任何想法吗?

最佳答案

您有两种选择:


将场景移动到一个yourScene.lua文件(按您的名字命名),在其中调用storyboard.newScene()(无参数),在main.lua中使用storyboard.goto('yourScene')
您可以通过main.luastoryboard.newScene('yourScene')中创建场景,并通过storyboard.goto('yourScene')在main.lua中进入场景


基本上,您的场景可以在一个单独的模块中,Corona会根据模块名称自动为其命名,然后main.lua转到该模块,或者您的场景可以在同一模块中,但是您必须自己给它命名,然后命名为main。 lua可以“转到”它(在同一模块中)。同一模块中甚至可以包含多个场景。

我建议您将场景放在单独的模块中,这样做只会带来更好的模块化。推测:方法2可能是原始方法,而方法1是在开发人员发现他们的场景越来越大并因此需要将它们移到单独的模块时添加的。

关于lua - 在场景内创建时,Corona SDK widget.newButton()未出现在模拟器中:,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25643238/

10-15 07:47