Corona SDK widget.newButton()在场景中没有出现在模拟器中:创建

时间:2014-09-03 11:34:05

标签: lua corona

我有以下代码:

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

当我将此代码放在独立文件(不是场景)中时,按钮显示为假设。但是现在我将这个独立文件转换为一个场景,由于某种原因,上面的代码在模拟器中没有任何结果。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

您有两种选择:

  1. 将您的场景移动到yourScene.lua文件(按照您的意愿命名),在其中调用storyboard.newScene()(无参数),并在main.lua中使用storyboard.goto('yourScene')
  2. 您可以main.lua通过storyboard.newScene('yourScene')创建场景,然后通过storyboard.goto('yourScene')
  3. 从main.lua中转到该场景

    基本上你的场景可以在一个单独的模块中,电晕根据模块名称自动命名,而main.lua会转到它,或者你的场景可以在同一个模块中,但是你必须自己给它命名,和main.lua可以"转到"它(在同一模块内)。您甚至可以在同一模块中拥有多个场景。

    我建议您将场景放在单独的模块中,这样可以实现更好的模块化。猜想:也许方法2是原始方法,并且当开发人员发现他们的场景变得越来越大并且需要将它们移动到单独的模块时,方法1被添加。

答案 1 :(得分:2)

上面发布的代码位于main.lua文件中。因此,永远不会调用场景。解决方案是将上面的文件重命名为menu.lua,然后从main.lua调用此场景。