一个关于加载studio生成的json的问题

我有两个json,都是studio导出的,分别是A.json和B.json,

其中A.json中有个按钮,我想在这个按钮的点击事件中加载B.json,
这时候我发现加载B之后如果直接B:addTo(self)的话无法显示B的界面,
感觉可能是B:addTo(self)是把B添加到加载A的layout里面了,所以无法显示。
这种情况应该怎么解决?

这个应该看你的需求吧,你想把B加到哪里,self是不是对的,B的层级会不会被挡住,检查下这些吧

大概的代码是这样的:

function MyScence:initUI()
local uiFrame = ccs.GUIReader:getInstance():widgetFromJsonFile(“res/NewScence/NewScence.json”)
uiFrame:align(display.CENTER, display.cx, display.cy)
uiFrame:addTo(self)

local btn_test = ccui.Helper:seekWidgetByName(uiFrame, "btn_test")
btn_test:addTouchEventListener(function(ref, event)
                             MyScence:onButtonClick()
                         end)   

end

function MyScence:onButtonClick()
local testDialog = require(“app.dialogs.TestDialog”).new()
testDialog:addTo(self)
end

楼上红色那行运行之后没有显示testDialog

onButtonClick中的self值对不对

应该是不对,怎么看self的值呢?

刚才试了一下如果我把添加触摸事件的代码改成下面这样就能显示了
btn_test:addTouchEventListener(function(ref, event)
MyScence.onButtonClick(self)
end)

但是新的问题来了,在打开的对话框代码中,self:removeSelf()退不出来

好吧,现在问题解决了,在新对话框的关闭按钮注册事件的时候,也要用
Class.onClick(self)
这种形式
因为发生回调事件的时候,如果采用隐式传入self,这个self根本就不是Class,而是调度类的self(大概是这样吧,对框架不是很熟悉)
所以要在注册回调的时候显示指定self是谁

学习了学习了
多谢大侠的关注!