使用一行代码在Corona上创建按钮,但是添加功能失败。

一直在研究,但没有发现好的解决方法。在Corona SDK上创建一个按钮需要写很多行代码( Corona SDK reference here)。如果要创建5个按钮,代码会很长,因此我创建了一个函数,只需一行代码就可以调用并创建所需的按钮。这个函数的运行很好,但无法对事件进行排序。

cbutton = function (nbutton, tbutton, blabel, bfs, bx, by)

bfcolor={default = { 51, 51, 51, 215 }}
if tbutton == "default-1" or tbutton == "default-2" or tbutton == "default-3" then bfcolor = nil end

local button1 = widget.newButton
{
    defaultFile = "assets/" .. tbutton .. ".png",
    overFile = "assets/o" .. tbutton .. ".png",
    label = blabel,
    labelColor = bfcolor,
    fontSize = bfs,
    emboss = true,
    onPress=botonhrPress // <-- HERE, THIS PART
}
button1.x = bx; button1.y = by
end

cbutton("b1","primary-1","Create account", 20, 160, 160)

所以,事情是这样的。

  1. 上面的代码有效,它可以创建按钮。
  2. 使用最后一行,调用函数并创建按钮
  3. 它使用了参数
  4. 字段中写有"HERE",它将事件绑定到按钮上
  5. 但是,它直接被写死了,无法在那里传递参数。

尝试了连接字符串、使用包含本地函数名称的完整字符串变量,还尝试了使用%、&、()和{}来包含数据,但都没有运行成功。如果我们能够解决这个问题,那么我们就可以使用只有一行代码加上这里发布的函数来创建按钮。如果你有什么好的想法,将不胜感激,提前致谢。

点赞