比如 遍历了某个node的所有孩子节点,如何判定此孩子节点是否是sprite或者widget又或者就是node,好比C++中的动态类型转换 dynamic_cast 一样,可以对继承关系进行判断,查了一下tolua_cast好像没有做类型判断
当然可以自己封装接口C++接口再自己使用tolua导出
就是想确认下现在的cocos引擎里面是否有这样的方法,又或者有其他的方式可以确认
比如 遍历了某个node的所有孩子节点,如何判定此孩子节点是否是sprite或者widget又或者就是node,好比C++中的动态类型转换 dynamic_cast 一样,可以对继承关系进行判断,查了一下tolua_cast好像没有做类型判断
当然可以自己封装接口C++接口再自己使用tolua导出
就是想确认下现在的cocos引擎里面是否有这样的方法,又或者有其他的方式可以确认
function iskindof(obj, classname)
local t = type(obj)
local mt
if t == “table” then
mt = getmetatable(obj)
elseif t == “userdata” then
mt = tolua.getpeer(obj)
end
while mt do
if mt.__cname == classname then
return true
end
mt = mt.super
end
return false
end
谢谢你的回答,不过测试了发现 tolua.getpeer 返回的都是nil
问题已解决
直接使用 tolua.iskindof(obj, classname) 判断即可
在 cocos->cocos2d->functions.lua 中也现实了此接口的 iskindof(obj, classname)