解决coco2dx关闭widget时crash的BUG

最近在用cocos code ide开发时,载入一个用cocos studio开发的UI json文件,点关闭按钮,在关闭按钮里我调用removeFromParentAndCleanup,直接crash掉了。

后来发现不能直接删除由json文件万成的面板,估计是删除自己时发现自己已经是NULL了。只能通过下面的方式,再一个tick中删除UI。


  local uiWuJiang=ccs.GUIReader:getInstance():widgetFromJsonFile("charactor.json");
    self.LayerInstance:addChild(uiWuJiang, 100,100);
    self.widget = uiWuJiang
    local mainlayer = getMainMenuLayer()
    if mainlayer then
        mainlayer:addLayer(self.LayerInstance, UITagTable["WuJiang"].tag)
    end
    --关闭
    ccui.Helper:seekWidgetByName(uiWuJiang,"Button_close"):addTouchEventListener(function (sender, eventType)
       
        if eventType == ccui.TouchEventType.ended then
            cclog("close button down")
            self.LayerInstance:removeFromParentAndCleanup()    
            local mainlayer = getMainMenuLayer()
               
            if mainlayer then
                 performWithDelay(mainlayer, function ()  self.LayerInstance:removeChild(self.widget, true);  mainlayer:removeLayer(UITagTable["WuJiang"].tag) end, 0.01)
            end
        end
       
    end)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值