当widget.newButton()在scene:create中时,在模拟器中无法显示。

以下是我的代码:

function scene:create( event )

  local sceneGroup = self.view

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

  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

当我将此代码放在独立文件中(不是场景),按钮将按预期显示。但现在我将此独立文件转换为一个场景,出现以上代码后模拟器上没有任何反应。有什么想法吗?

点赞
用户1790813
用户1790813

上面发布的代码位于 main.lua 文件中。因此,该场景从未被调用。解决方案是将上面的文件重命名为 menu.lua 等名称,然后从 main.lua 中调用这个场景。

2014-09-03 11:58:25
用户869951
用户869951

您有两个选择:

  1. 将您的场景移动到一个自己命名的 yourScene.lua 文件中,在其中调用 storyboard.newScene()(无参数),并且在 main.lua 中使用 storyboard.goto('yourScene')
  2. 您可以通过在 main.lua 中使用 storyboard.newScene('yourScene') 来创建场景,并且通过 storyboard.goto('yourScene')main.lua 中跳转到它。

基本上,您的场景可以在一个单独的模块中,Corona 根据模块名称自动命名它,并且 main.lua 跳转到它;或者您的场景可以在同一个模块中,但是您必须自己为其命名,main.lua 可以从中“goto”它(在同一个模块中)。甚至可以在同一个模块中有多个场景。

我建议您将您的场景放在单独的模块中,这样更好的模块化。猜测:也许方法 2 是最初的方法,当开发人员发现它们的场景变得很大,因此需要将它们移到单独的模块中时添加了方法 1。

2014-09-03 13:00:44