在使用Corona中的Lua时,运行时添加监听器会减慢应用程序的显示速度。

从我的下面代码中,如何在不中断应用程序的显示部分的情况下使 Runtime 监听器正常运行?当前,当我使用 Runtime 监听器时,显示速度会变慢。FYI,我是 Lua/Corona 的新手,也是 stackoverflow 上的新手。

function scene:createScene( event )
        group2 = scrollView.new{ top=topBoundary, bottom=bottomBoundary }

        myImage = display.newImage("imgbg1.png")
        myImage.isVisible =  true
        group2:insert(myImage)

        local yval = 120

        socket,err=socket1.connect("host", port)

        while not err do

            socket:settimeout(1)
            socket:send("runcommand\r\n")

            repeat
              line, err = socket:receive()

              if line then
                no = no + 1

                -- [[ get only the main properties ]] --
                if no >= 5 then
                reply = reply .. line
                end
              end
            until err

            t1 = reply
            loadnsave:saveToJson(t1,filename)
            tsw = loadnsave:loadData(filename)

            local i = 0

            for k, v in pairs(tsw) do
                i = i + 1
                print("\n" .. k , v )
                locy = locy + 20
                imgBase[i] = display.newImage("image.png")
                imgBase[i].x = locx
                imgBase[i].y = locy
                group2:insert(imgBase[i])

                sw[i] = swfunc(tsw[k],k,locy,i)

                group2:insert(sw[i])

                locy = locy + 40 + iHeight
            end

            inity = 1
            initw = 1
        end

    Runtime:addEventListener("enterFrame", swlistener)

end

function swlistener(event)
    local reply2 = ""
    repeat
      line2, err2 = socket:receive()

      if line2 then
        reply2 = reply2 .. line2
      end

    until err2
end
点赞
用户1137788
用户1137788

如果我没看错的话,这与运行时监听器无关。问题可能在于套接字连接导致了应用程序的减速。

我不是100%确定(屏幕是否会冻结?如果是那就是问题所在)。如果套接字连接确实是问题,你可以采取以下措施之一:

2012-11-26 19:15:18
用户1852204
用户1852204

我已经尝试了如下@ SatheeshJM,但是没有效果

socket,err = socket1.connect(“主机”,端口)
socket:setoption(“tcp-nodelay”,true

我通过将超时时间设置为较小的值(如0.01)找到了解决方案

socket:settimeout(0.01)
 

现在,套接字和显示器可以正常工作了

但是我认为我需要稍微改变我的swlistener函数。

2012-11-27 07:19:35