我本想在lua中用node的setuserdata,但是发现没有被编译成lua的。倒腾出来后,又发现lua中setuserdata一个table,get的是node。就算不set也可以get一个node。跟踪调试没有发现任何一个地方设置c++的node中_userData。很郁闷,求高手解答
放假回来,继续研究这个问题。我仿造setuserdata在node中做了个setSelfPoint,结果与setuserdata一致
代码片段:
local onContactBegin = function(contact)
print(“xiaoxixiangying---------”)
local dataA = contact:getShapeA():getBody():getNode():getSelfPoint();
if dataA ~= nil then
print(“a”)
SelfTool.print(dataA)
dataA = tolua.cast(dataA,“table”)
dataA()
end
local dataB = contact:getShapeB():getBody():getNode():getUserData();
if dataB ~= nil then
print(“b”)
dataB()
end
end
local afun = function(parameters)
print("c")
end
local contactListener = cc.EventListenerPhysicsContact:create();
contactListener:registerScriptHandler(onContactBegin, cc.Handler.EVENT_PHYSICS_CONTACT_BEGIN);
local eventDispatcher = layer:getEventDispatcher()
eventDispatcher:addEventListenerWithSceneGraphPriority(contactListener, layer);
layer:setSelfPoint(self)
断点调试时候contact:getShapeA():getBody():getNode();和contact:getShapeA():getBody():getNode():getUserData();以及contact:getShapeA():getBody():getNode():getSelfPoint();打印的指针一致