0

我正在使用 widget.newButton 生成一个 6x6 的按钮网格。我希望用户能够通过触摸屏幕然后将手指拖到所需按钮上来将数字添加到选择中。例如,如果我想选择“811030”(即网格的第一行),那么我只需将手指拖过它即可。

在此处输入图像描述 这是我到目前为止的代码:

local widget = require( "widget" )

local function handleButtonEvent( event )
local phase = event.phase

if "moved" == phase then
    print("Button Pressed")
end
end

function tileRow(numTiles, padding)

local tileWidth = (display.contentWidth / numTiles) - padding
local x = padding/2
local y = display.contentHeight - numTiles * (tileWidth + padding)

    for i = 1, numTiles, 1 do
        for j = 1, numTiles, 1 do 
            local myButton = widget.newButton
            {
                left = x,
                top = y,
                width = tileWidth,
                height = tileWidth,
                id = "button_"..i..j,
                label = math.random(0,9),
                onEvent = handleButtonEvent,
            }
            x = x + tileWidth + padding
        end
        x = padding/2
        y = y + tileWidth + padding
    end
end

tileRow(6,1)
4

2 回答 2

0

只需访问事件处理程序中的标签,然后从那里构建您的完整号码。我会让你处理极端情况,比如在某一时刻将 fullNumber 放回 "" :)

local fullNumber = ""
local function handleButtonEvent( event )
    local phase = event.phase
    local btn = event.target
    local btnLabel = btn.label

    if "moved" == phase then
        print("Button Pressed with label:"..btnLabel)
        fullNumber=fullNumber..btnLabel
        print("Full number: "..fullNumber)
    end
end

干杯!

于 2013-11-06T11:48:29.087 回答
0
  • 获取手指下的按钮

在 handleButtonEvent 中,您可以检索用户触摸和移动手指的坐标 (x, y)。事实上, event.target 不足以达到您的目的,因为 event.target 将始终等于第一个触摸的按钮。您必须实现这个函数 GetMyButton(x, y),它将返回一个 widget.newButton。应该不难。

  • 获取找到的按钮的标签

根据widget_button.lua,要获取按钮的标签,您应该这样做:

local btnLabel = btn:getLabel()
  • 连接找到的标签(注意重复)
于 2013-11-06T16:49:02.170 回答