原来的工程是用studio1.6做的,现在升级到cocos3.13版本了,1.6版本到处的csb不能用了,于是把studio也升级到3.10了,现在问题来了,新建工程导入的1.6工程,发布出来的csb文件可以加载显示界面,不过用getChildByName,获取控件为空,写了个测试,有层级结构的直接获取子控件也为空,请问有没有一个比较省事的方法,可以完美使用1.6的工程
我自己试了一下,自己在用的时候把层级关系用上,就能解决,不过挺麻烦的
getChildByTag(tag);
好谢谢回来试试
我用了一下,结果取到的值为空
auto rootNode = CSLoader::createNode(“xxx.csb”);
this->addChild(rootNode);
auto Num = (ImageView*)rootNode->getChildByTag(6);
//逻辑标签为6的imageview对象
log("%f,%f", Num->getPositionX(), Num->getPositionY());
2赞
#include “cocostudio/CocoStudio.h”
#include “ui/CocosGUI.h”
USING_NS_CC;
using namespace cocos2d::ui;
using namespace cocostudio::timeline;
using namespace cocostudio;
2赞
我试了一下成功了
谢谢你的解答
网上找了一个递归的方法也可以实现,把我改的llua代码贴一下。
function IWindow:seekNodeByName(root, name)
if ( nil ==root) then
return nil
end
if (root:getName() == name) then
return root
end
local arrayRootChildren = root:getChildren()
for i,v in pairs(arrayRootChildren) do
if (nil ~= v) then
local res = self:seekNodeByName(v,name)
if (res ~= nil ) then
return res
end
end
end
end