如何在不使用id的情况下获取lua中的数组值

时间:2012-04-28 01:37:38

标签: lua corona

我的lua中有这个数组......

local data = {}

data[1] = {}
data[1].title = "Crazy Song"
data[1].subtitle = "by Bruno Earth"
data[1].image = "note.png"

data[2] = {}
data[2].title = "Enter Sunman"
data[2].subtitle = "by Mentalica"
data[2].image = "note.png"

data[3] = {}
data[3].title = "Bitter Child of Mine"
data[3].subtitle = "by Gunz n bullets"
data[3].image = "note.png"

data[4] = {}
data[4].title = "Missed A thing"
data[4].subtitle = "by Ero-Smith"
data[4].image = "note.png"

data[5] = {}
data[5].title = "Pornstar"
data[5].subtitle = "by Nicklefront"
data[5].image = "note.png"

data[6] = {}
data[6].title = "Burner"
data[6].subtitle = "by Asher"
data[6].image = "note.png"

如何通过不使用id来获取数组值。我只想获得条件语句的title

我在我的代码中尝试这个:

local getTitle = function(event)
    print (".................")
    print (event.target.id)
    print (event.target.title)
end

但我只得到了......

touch: began
touch: ended
.................
2
nil

如何获取和打印我的数组的title

这是我的代码:

module(..., package.seeall)
display.setStatusBar( display.HiddenStatusBar ) 
function new()
    local localGroup = display.newGroup()
    local tableView = require("tableView")
    local ui = require("ui")

    --------------------------------------------------------------------------
    local screenOffsetW, screenOffsetH = display.contentWidth -  display.viewableContentWidth, display.contentHeight - display.viewableContentHeight

    local songList
    local backBtn
    local detailScreenText

    local background = display.newRect(0, 0, display.contentWidth, display.contentHeight)
    background:setFillColor(0, 0, 0)
    localGroup:insert(background)

    local data = {}
    --iPad: setup a color fill for selected items
    local selected = display.newRect(0, 0, 50, 50)  --add acolor fill to show the selected item
    selected:setFillColor(67,141,241,180)  --set the color fill to light blue
    selected.isVisible = false  --hide color fill until neede

    -----------------------------------------------
    data[1] = {}
    data[1].title = "Crazy Song"
    data[1].subtitle = "by Bruno Earth"
    data[1].image = "note.png"

    data[2] = {}
    data[2].title = "Enter Sunman"
    data[2].subtitle = "by Mentalica"
    data[2].image = "note.png"

    data[3] = {}
    data[3].title = "Bitter Child of Mine"
    data[3].subtitle = "by Gunz n bullets"
    data[3].image = "note.png"

    data[4] = {}
    data[4].title = "Missed A thing"
    data[4].subtitle = "by Ero-Smith"
    data[4].image = "note.png"

    data[5] = {}
    data[5].title = "Pornstar"
    data[5].subtitle = "by Nicklefront"
    data[5].image = "note.png"

    data[6] = {}
    data[6].title = "Burner"
    data[6].subtitle = "by Asher"
    data[6].image = "note.png"

    local topBoundary = display.screenOriginY + 40
    local bottomBoundary = display.screenOriginY + 0

    local getTitle = function(event)
        print (".................")
        print (event.target.id)
        print (event.target.title)
    end

    songList = tableView.newList{
        data=data,
        default="listItemBg.png",
        over="listItemBg_over.png",
        onRelease=getTitle,
        top=topBoundary,
        bottom=bottomBoundary,
        callback = function( row )
            local g = display.newGroup()

            local img = display.newImage(row.image)
            g:insert(img)
            img.x = math.floor(img.width*0.5 + 6)
            img.y = math.floor(img.height*0.5)

            local title =  display.newText( row.title, 0, 0, native.systemFontBold, 16 )
            title:setTextColor(0,0,0)
            g:insert(title)
            title.x = title.width*0.5 + img.width + 6
            title.y = 30

            local subtitle =  display.newText( row.subtitle, 0, 0, native.systemFont, 14 )
            subtitle:setTextColor(80,80,90)
            g:insert(subtitle)
            subtitle.x = subtitle.width*0.5 + img.width + 6
            subtitle.y = title.y + title.height + 6

            return g
        end
     }
    localGroup:insert(songList)
    local function scrollToTop()
        songList:scrollTo(topBoundary-1)
    end

    local navBar = display.newImage("navBar.png")

    navBar.x = display.contentWidth*.5
    navBar.y = math.floor(display.screenOriginY + navBar.height*0.5)
    localGroup:insert(navBar)

    local navHeader = display.newText("Song Lists", 0, 0, native.systemFontBold, 16)
    navHeader:setTextColor(255, 255, 255)
    navHeader.x = display.contentWidth*.5
    navHeader.y = navBar.y
    localGroup:insert(navHeader)

    --backBtn.alpha = 0

    local listBackground = display.newRect( 0, 0, songList.width, songList.height )
    listBackground:setFillColor(255,255,255)
    songList:insert(1,listBackground)

    --Setup the back button
    function changeScene(e)
        if e.phase == 'ended' then
            print ("ok")
            director:changeScene(e.target.scene, "fade")
            print ("back!")

        end
    end

    backBtn = display.newImage("backButton.png")
    backBtn.x = math.floor(backBtn.width/2) + backBtn.width + screenOffsetW
    backBtn.y = navBar.y 
    backBtn.scene = "menu"
    backBtn:addEventListener("touch", changeScene)

    return localGroup
end

1 个答案:

答案 0 :(得分:1)

我明白了...... 我这样做

local getTitle = function(event)
    print (".................")
    local id = event.target.id
    print (id)
    print (data[id].title)
end