quick3.3 进度条进度不刷新问题

场景文件load进去后需要有一大段逻辑处理,所以加入一个进度条,场景文件在构建体(ctor)中加载,loading本想在onEnter中加载,发现不行,在调度器中做了一次loading加载:

问题:为什么每次调lb:setPercent(80) 函数后进度没有重绘,尝试每次设置后调用draw(),但是没有效果,求思路,求解决方案

function loading()
t = os.clock()
local lb = self.loadingBar
–print(lb:isScale9Enabled())
–lb:setScale9Enabled(true)
lb:setPercent(10)
self.loadingNode:draw()
lb:draw()
–lb:loadTexture()
– create pageview
self.jjj = {}
self:pageViewCtrl()
lb:setPercent(80)
LoadLayer:show(self, “stage”)
lb:setPercent(85)
– 背景音乐
Mp3Ctrl:runMusic(“common”)
lb:setPercent(90)
……

阻塞了当然不会刷新。。
要么用c++方法新开一个线程来做进度条这个事,要么想办法用lua的携程

我在想是不是有reDraw之类的接口重新绘制一下进度,这种方式最方便

线程阻塞时,同一个线程就算用reDraw也是无法立即刷新的,只有等线程空闲了才会刷新

UI绘制和逻辑不都是在同一个线程工作的吗,为什么会有线程阻塞这种事情发生,如果有重新绘制接口,为什么不能立即刷新

你把setPercent()都放在同一个方法里面执行能变化么。。

粗暴点写就是这样

        self:performWithDelay(function ()
            --逻辑1
            lb:setPercent(10)
        end, 0.01)

        self:performWithDelay(function ()
            --逻辑2
            lb:setPercent(20)
        end, 0.02)

        self:performWithDelay(function ()
            --逻辑3
            lb:setPercent(30)
        end, 0.03)

        self:performWithDelay(function ()
            --逻辑4
            lb:setPercent(40)
        end, 0.04)

```

可以使用lua的协程

非常感谢,解决了

多谢,这个略屌,对于大量计算不好控制,用协程搞定