removeAllNodeEventListeners 程序陷入死循环

在Layer的onExit()方法中调用
self:removeAllNodeEventListeners()
导致player卡死,应该是出现死循环了

之前有人发帖遇到类似的问题
但是没有贴出代码
这里贴上我的测试代码

IntroLayer = class("IntroLayer", function()
    return display.newLayer()
end)

function IntroLayer:ctor()
    printInfo("IntroLayer:ctor")

    local button = cc.ui.UIPushButton.new("button.png")
    button:pos(display.cx, 100)
    button:onButtonPressed(function(event)
        event.target:setScale(1.1)
    end)
    button:onButtonRelease(function(event)
        event.target:setScale(1.0)
    end)
    button:onButtonClicked(function(event)
        require("app/Scenes/MainScene/MainScene")
        local mainScene = MainScene:new()
        display.replaceScene(mainScene)
    end)
    self:addChild(button)

    -- Node事件
    self:setNodeEventEnabled(true)
end

function IntroLayer:onEnter()
    printInfo("IntroLayer:onEnter")
end

function IntroLayer:onExit()
    printInfo("IntroLayer:onExit")
    self:removeAllNodeEventListeners()   -- 增加这一句出错
end


```

谢谢反馈,我们测试一下

我也碰到了。。。什么时候能解决啊

楼主的代码经测试,在现在的版本上问题已经改好。你还是有问题吗?请将你自己的代码发出来看一下呢?

就是新建个场景。然后新建了个初始化函数 然后调用self:removeAllNodeEventListeners()然后就悲剧了

经测试没有发现此现象啊。
而且为什么会这么做呢?

这么做。。仅仅是测试了一下。。结果就发现很bug
function CCSTest:init()
self._uiLayer = TouchGroup:create()
self:addChild(self._uiLayer)
self:removeAllNodeEventListeners()

end
我在初始化函数里添加了self:removeAllNodeEventListeners()因为该函数会被多次调用,就偷懒这么写了。然后就出现了弹出N个创建新项目和打开浏览器的BUG。
但是加在后面是没有问题的。。具体原因不明。。

CCSTest是一个场景?init()是在什么地方调用的,ctor函数里吗?TouchGroup是一个层还是一个Node?

init()是在onEnter 里面调用
local touchGroup = tolua.cast(render:getNode(), “TouchGroup”)
就是node

我就是把CCS的例子改了下。结果就如此了

你不要用ccs的node,用其他普通的试试?或者直接不创建_uiLayer,看还会不会出错