time: 2015/07/23
版本:
/******************************************************************************
* Spine Runtimes Software License
* Version 2.1
- 在C++中添加获取骨骼的函数
(1)SkeletonAnimation.h
/* page@2015/07/23 Return bone point */
virtual cocos2d::Vec2 getBonePosition(const char* boneName) const;
(2)SkeletonAnimation.cpp
Vec2 SkeletonAnimation::getBonePosition(const char* boneName) const
{
spBone *pBone = findBone(boneName);
if (pBone)
return cocos2d::Vec2(pBone->worldX, pBone->worldY);
return cocos2d::Vec2(0, 0);
}
- 使用tolua导出lua接口函数
(1)打开tolua目录
(2)把genbindings.py文件复制一份,重命名为genbindings_spine.py,修改其中一段代码为
try:
tolua_root = '%s/tools/tolua' % project_root
output_dir = '%s/cocos/scripting/lua-bindings/auto' % project_root
cmd_args = {'cocos2dx_spine.ini' : ('cocos2dx_spine', 'lua_cocos2dx_spine_auto')}
target = 'lua'
- 也可以不改,直接使用genbindings.py文件,只是会慢很多
(3)cmd命令行下运行:python genbindings.py
(4)生成的文件
tolua_beginmodule(tolua_S,"SkeletonAnimation");
tolua_function(tolua_S,"setStartListener",lua_cocos2dx_spine_SkeletonAnimation_setStartListener);
tolua_function(tolua_S,"setTrackEventListener",lua_cocos2dx_spine_SkeletonAnimation_setTrackEventListener);
tolua_function(tolua_S,"setTrackCompleteListener",lua_cocos2dx_spine_SkeletonAnimation_setTrackCompleteListener);
tolua_function(tolua_S,"setTrackStartListener",lua_cocos2dx_spine_SkeletonAnimation_setTrackStartListener);
tolua_function(tolua_S,"setCompleteListener",lua_cocos2dx_spine_SkeletonAnimation_setCompleteListener);
tolua_function(tolua_S,"setTrackEndListener",lua_cocos2dx_spine_SkeletonAnimation_setTrackEndListener);
tolua_function(tolua_S,"setEventListener",lua_cocos2dx_spine_SkeletonAnimation_setEventListener);
tolua_function(tolua_S,"setMix",lua_cocos2dx_spine_SkeletonAnimation_setMix);
tolua_function(tolua_S,"setEndListener",lua_cocos2dx_spine_SkeletonAnimation_setEndListener);
tolua_function(tolua_S,"getBonePosition",lua_cocos2dx_spine_SkeletonAnimation_getBonePosition);
tolua_function(tolua_S,"clearTracks",lua_cocos2dx_spine_SkeletonAnimation_clearTracks);
tolua_function(tolua_S,"clearTrack",lua_cocos2dx_spine_SkeletonAnimation_clearTrack);
tolua_endmodule(tolua_S);
* 多了一个加红的函数
- 使用
local pos = arm:getBonePosition(tbPos)
print("pos = ", pos.x, pos.y);
结果:
pos = 8.8648509979248 89.864677429199
原文链接: https://www.cnblogs.com/pk-run/p/4670617.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/219531
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!