最近在用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)