如题,广度搜索子节点,代码笔记:
-- 通过name获取节点
cc.exports.seekWidgetByName = function (node,name)
if node and node:getName() == name then return node end
local children = {node:getChildren()}
local index = 0
while index < #children do
index = index + 1
for k,v in pairs(children[index]) do
if v.getName and v:getName() == name then
return v
end
if v.getChildren then
table.insert(children,v:getChildren())
end
end
end
return nil
end
-- 通过tag获取
cc.exports.seekWidgetByTag = function (node,tag)
if node and node:getTag() == tag then return node end
local children = {node:getChildren()}
local index = 0
while index < #children do
index = index + 1
for k,v in pairs(children[index]) do
if v.getTag and v:getTag() == tag then
return v
end
if v.getChildren then
table.insert(children,v:getChildren())
end
end
end
return nil
end
-- 递归访问所有节点,执行func,参数为 当前节点node
cc.exports.doFuncVisit = function (node,func)
if (not node)or(not func) then return end
func(node)
if node.getChildrenCount and node:getChildrenCount() > 0 then
for k,v in pairs(node:getChildren()) do
doFuncVisit(v,func)
end
end
end