在循环中我更改了文本字段的文本。但是,在循环结束之前,电晕不会渲染。是否可以在循环内强制渲染?
我尝试过使用display.setDrawMode(“forceRender”)并在循环中进行睡眠,但这并不重要。我试图做一个更新的进度条。
答案 0 :(得分:2)
Corona仅在您的事件处理程序之间呈现。处理程序循环时,Corona无法更新显示。基本上,处理程序中除影响显示之外的所有命令仅在处理程序将控制权返回到Corona后生效。因此,如果要在文本字段中重复显示值更改,则不能使用循环,只有在显示时才会显示对值的最后更改,并且仅在返回后显示。
因此,您需要使用Corona的一种机制来使更新再次发生。例如,您可以收听Runtime
的{{1}}事件;在那里,确定是否是时候更新值和/或文本字段并相应地采取行动。如果这会导致更新太多(每秒30或60次),那么另一种方法是安排更新文本字段以供日后使用,如Frozire所示:
enterFrame
上述内容每秒会调用function updateValueDisplayed()
...compute new value...
...if changed, update the display object that shows the value...
end
timer.performWithDelay( 500, updateValueDisplayed, -1 )
两次,直到您退出。如果延迟每次都应该不同,或者应该在某些条件下停止,那么您只能updateValueDisplayed
一次(删除第三个调用参数),并在performWithDelay
内调用timer.performWithDelay( delay, updateValueDisplayed)
。
澄清:你不能使用updateValueDisplayed
循环。您只能使用重复的函数调用,上面介绍了两种方法。