【问题标题】:Runtime addeventlistener slowing down the application display in Lua using Corona运行时 addeventlistener 使用 Corona 减慢 Lua 中的应用程序显示
【发布时间】:2012-11-26 10:13:56
【问题描述】:

从下面的代码中,我怎样才能使运行时侦听器运行而不中断我的应用程序的显示部分?目前,当我使用运行时侦听器时,显示速度变慢。仅供参考,我是 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

【问题讨论】:

    标签: sockets tcp lua coronasdk


    【解决方案1】:

    如果我没记错的话,这与运行时侦听器无关。它的套接字连接可能会减慢应用程序的速度..

    我不是 100% 确定(它会冻结屏幕吗?如果是,那就是问题所在) 如果套接字连接确实是问题,您可以执行以下操作之一..

    【讨论】:

      【解决方案2】:

      我已经尝试如下@SatheeshJM,但它不起作用

      socket,err=socket1.connect("host", port)
      socket:setoption("tcp-nodelay",true)
      

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

      socket:settimeout(0.01)
      

      现在插座和显示器工作正常

      但我认为我需要稍微改变一下我的 swlistener 功能。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-29
        • 1970-01-01
        • 2023-03-29
        • 1970-01-01
        相关资源
        最近更新 更多