Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua 强制corona sdk在循环中渲染_Lua_Coronasdk - Fatal编程技术网

Lua 强制corona sdk在循环中渲染

Lua 强制corona sdk在循环中渲染,lua,coronasdk,Lua,Coronasdk,在循环中,我更改textfield的文本。但在循环完成之前,corona不会渲染。是否可以在循环内强制渲染 我尝试过display.setDrawMode(“forceRender”)并在循环中进行睡眠,但这并不重要。我正在尝试更新进度条。Corona只在事件处理程序之间渲染。处理程序循环时,Corona无法更新显示。基本上,处理程序中影响显示的所有命令只有在处理程序将控制权返回到Corona后才会生效。因此,如果要在文本字段中重复显示值更改,则不能使用循环,只有最后一次对值的更改才会在显示时可

在循环中,我更改textfield的文本。但在循环完成之前,corona不会渲染。是否可以在循环内强制渲染


我尝试过display.setDrawMode(“forceRender”)并在循环中进行睡眠,但这并不重要。我正在尝试更新进度条。

Corona只在事件处理程序之间渲染。处理程序循环时,Corona无法更新显示。基本上,处理程序中影响显示的所有命令只有在处理程序将控制权返回到Corona后才会生效。因此,如果要在文本字段中重复显示值更改,则不能使用循环,只有最后一次对值的更改才会在显示时可见,并且只有在返回后才可见

因此,您需要使用Corona的一种机制使更新再次发生。例如,您可以监听
运行时
enterFrame
事件;在此处,确定是否是更新值和/或文本字段的时候,并相应地采取行动。如果这会导致太多的更新(每秒30或60次),那么另一种方法是按照Frozire的建议,为以后安排文本字段的更新:

function updateValueDisplayed()
    ...compute new value...
    ...if changed, update the display object that shows the value...
end

timer.performWithDelay( 500, updateValueDisplayed, -1 )
上述操作将每秒调用
updateValueDisplayed
两次,直到您退出。如果每次延迟都不同,或者在某些情况下应该停止,则您可以仅调用一次(删除第三个调用参数)并调用计时器。根据需要,从
updatevaluedisplated
中调用
performWithDelay(delay,updatevaluedisplated)


澄清:不能对循环使用
。您只能使用重复函数调用,上面描述了两种方式。

而不是使用循环,使用“PosiePrimeStime= Time.PrimeFuffelDead(1000,UpDeaEndoPro,-1)”来考虑,并具有UpDeaEdvestPro函数,请注意更新进度BAR。谢谢您的回答,我两个都试过了,但都不管用。然后enterframe函数更新,但一旦循环启动,更新函数将保持不变,并在循环完成后直接开始更新。就像科罗纳只使用一根线。是的,科罗纳只在一根“线”上运行。您不需要在updateValueDisplayed()函数中创建新循环来连续处理更新。相反,updateValueDisplayed()函数将成为您的循环,此函数将被连续调用。因此,将逻辑放在循环中,并将其放入这个函数中。