2015-02-26 2 views
0

У меня есть таблица, которая выглядит следующим образом:создать несколько кнопок из таблицы в Lua (Corona SDK)

table = 
{ 
{ 
    id = 1, 
    name = 'john', 
    png = 'john.png', 
    descr = "..." 
}, 
{ 
    id = 2, 
    name = 'sam', 
    png = "sam.png", 
    descr = "..." 
} 
... 
} 

Какую функцию можно использовать для отображения каждого снимка, как это и делают кнопки Them enter image description here

так что, когда я нажимаю на их изображение, я могу открыть их информацию.

Это где я застрял:

local buttons = display.newGroup() 
local xpos = -20 
local ypos = 0 
local e = -1 


function addpicture() 
    for i=1, #table do 
     xpos = (xpos + 100) % 300 
     e = e + 1 
     ypos = math.modf((e)*1/3) * 100 + 100 
     local c = display.newImage(table[i].name, system.TemporaryDirectory, xpos, ypos) 
     c:scale(0.4, 0.4) 
     c.name = table[i].tvname 
     buttons:insert(c) 
    end 
end 

function buttons:touch(event) 
    if event.phase == "began" then 
     print(self, event.id) 
    end 
end 
buttons:addEventListener('touch', buttons) 
addpicture() 

Как я могу распознать, какое изображение касания для того, чтобы вернуться к информации людей?

+1

Вы можете использовать display.newImageRect() с соответствующей PNG и установить слушатель на них, чтобы открыть информацию, или вы можете использовать widget.newButton(). Какая у вас сложность с вашим текущим кодом? – Melquiades

+0

Моя проблема заключается в том, что я не могу создать каждую кнопку отдельно, потому что я не знаю, сколько их будет, каждый пользователь должен будет иметь другой набор кнопок. – kylsg

+1

Затем вы просматриваете таблицу и создаете соответствующее количество кнопок, основываясь на том, что находится в таблице. – Melquiades

ответ

1

я решить мою проблему, добавив слушатель внутри цикла, как это:

function addpicture() 
    for i=1, #table do 
     xpos = (xpos + 100) % 300 
     e = e + 1 
     ypos = math.modf((e)*1/3) * 100 + 100 
     local c = display.newImage(table[i].name, system.TemporaryDirectory, xpos, ypos) 
     c:scale(0.4, 0.4) 
     c.name = table[i].tvname 
     buttons:insert(c) 
     function c:touch(event) 
     if event.phase == "began" then 
      print(self, event.id) 
     end 
     end 
     c:addEventListener('touch', c) 
    end 
end 
addpicture() 
+1

Это имеет смысл, потому что раньше вы устанавливали слушателя во всей группе отображения, а не на отдельной кнопке, как вы это делаете сейчас. – Melquiades

Смежные вопросы