lua中的Corona SDK display.remove()

lua中的Corona SDK display.remove(),lua,lua-table,Lua,Lua Table,此代码(lua)通过按文本“new”从表“local a”中提供一个随机值。不幸的是,新的随机值正好出现在旧的随机值之上。我尝试过删除旧值,例如使用display.remove(mmDis),但无效 第二个问题是,有时我还返回值“nil”,而不仅仅是表中的四个条目 这两件事都必须很容易解决,但作为lua的新手,我花了将近4个小时来处理这些小事情,现在我不知道该做些什么来改变它 -- references local mmDis -- functions function randomText

此代码(lua)通过按文本“new”从表“local a”中提供一个随机值。不幸的是,新的随机值正好出现在旧的随机值之上。我尝试过删除旧值,例如使用display.remove(mmDis),但无效

第二个问题是,有时我还返回值“nil”,而不仅仅是表中的四个条目

这两件事都必须很容易解决,但作为lua的新手,我花了将近4个小时来处理这些小事情,现在我不知道该做些什么来改变它

-- references
local mmDis

-- functions 
function randomText(event)
    display.remove(mmDis)
    local a = {"Banana!","Apple!","Potato","Pie"}

    com = (a[math.random(0.5,#a)])

    local mmDis = display.newText(tostring(com), 
        display.contentWidth*0.57, display.contentHeight*0.7,               
        display.contentWidth*0.9, display.contentHeight*0.8, "Calibri", 60)
end

    -- menu button
local textnew = display.newText("New", 0, 0, "Calibri", 40)
textnew.x = display.contentWidth*0.2
textnew.y = display.contentHeight*0.9

textnew:addEventListener ("tap", randomText )

很难理解您想做什么,因为当您创建
textnew
时,它位于一个位置和大小,而在
randomeText()
中,您似乎想用一个新的文本对象替换该文本对象,但您将它放置在不同的位置和大小。每次点击时,您似乎都想更改对象的文本;在这种情况下,不需要替换文本对象,只需替换其文本即可

此外:

  • 您有两个“本地MMDI”,第二个将隐藏第一个,不确定您在那里寻找什么
  • 仔细阅读
  • com已经是一个字符串,因此您不需要
    tostring
请尝试此代码,如果这不是您想要的,请告诉我:

local menuTextOptions = {
    text = "New", 
    x = display.contentWidth*0.2,
    y = display.contentHeight*0.9,
    align = 'left',
    font = "Calibri", 
    fontSize = 40,
}
local textnew = display.newText(menuTextOptions)

-- functions 
function randomText(event)
    local a = {"Banana!","Apple!","Potato","Pie"}
    local com = a[math.random(1,#a)]
    textnew.text = com

    -- if you want to change position too:  
    -- textnew.x = display.contentWidth*0.2
    -- textnew.y = display.contentHeight*0.9

    -- if you want to change size too, but only used for multiline text:  
    -- textnew.width = display.contentWidth*0.9
    -- textnew.height = display.contentHeight*0.8
end

textnew:addEventListener ("tap", randomText )
有时,当你点击按钮时,它看起来好像什么都不做,但那是因为随机数恰好与前面的相同,你可以设置一个循环来防止出现这种情况。如果你真的想改变位置和/或宽度,那么上面的代码就明确了你应该在哪里做

所以,这就是基本代码(目前没有任何附加代码:))应该是什么样子。非常感谢Scholli!:

local menuTextOptions = {
    text = "New", 
    x = display.contentWidth*0.2,
    y = display.contentHeight*0.9,
    align = 'left',
    font = "Calibri", 
    fontSize = 40,
}
local textnew = display.newText(menuTextOptions)

local replacement = display.newText(menuTextOptions)
replacement.y = display.contentHeight*0.5

-- functions 
function randomText(event)
    local a = {"Banana!","Apple!","Potato","Pie"}
    local com = a[math.random(1,#a)]
    replacement.text = com

end

textnew:addEventListener ("tap", randomText )

math.random(1,#a)
代替第二道题。谢谢,这已经帮了大忙,竖起大拇指!您好,非常感谢您的详细评论。你对代码的修改给了我正确的想法来处理我想做的事情。该计划是“新”总是留在那里,在屏幕中间,你总是得到一个新的部分从随机表点击“新”。