kylsg
kylsg

Reputation: 103

create multiple buttons from table in lua ( Corona sdk )

I have a table which looks like this:

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

What function could I use to display each picture like this and make them buttons enter image description here

so that when I click on their image I can open their info.

This is where I am stuck:

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()

How can I recognize which image is touched in order to go back to the persons info?

Upvotes: 0

Views: 1336

Answers (1)

kylsg
kylsg

Reputation: 103

I solved my problem by adding the listener inside of the loop like this:

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()

Upvotes: 1

Related Questions