游戏中一个retain过的常驻动画,切换场景该动画被暂停,并且报重复添加的错误。

local function addToCurScene(delta)
    local curScene = cc.Director:getInstance():getRunningScene()
    if curScene:getChildByName(self.m_MarqueeName)==nil then
        curScene:addChild(gMarqueeView)
    end
end
self.schedulerUpdate = cc.Director:getInstance():getScheduler():scheduleScriptFunc(addToCurScene, 0.5, false)

如上代码,切换了场景 addchild会偶尔报重复添加的错误,
并且动画被stop了。
cocos2dx lua 3.2版本

在切换场景过程中时定时器还未关闭,但是获取到的runningScene已经是下一个场景了
然后执行添加这个节点到当前场景,但是没有设置其name,在下一个场景中通过name查找子节点就找不到,就会重复添加

可以再onExitTransitionStart()事件里面关闭定时器,或者将节点加入到固定的场景中而不是runningScene

改成这样了
local function addToCurScene(delta)
local curScene = cc.Director:getInstance():getRunningScene()
if gMarqueeView:getParent()==nil then
– gMarqueeView:removeFromParent(false)
curScene:addChild(gMarqueeView)
end
end
self.schedulerUpdate = cc.Director:getInstance():getScheduler():scheduleScriptFunc(addToCurScene, 1/60, false)

这样可能会出错吧,因为如果gMarqueeView为空的话调用getParent()就会报错,所以要先判断gMarqueeView是否为空

恩 已经修复了。 就是lua 有一个问题 切换场景的时候会停止这个ui的所有action、 我必须手动记录再继续运行

不要这么设计代码