zoukankan      html  css  js  c++  java
  • spine获取骨骼位置

    time: 2015/07/23

    版本:

    /******************************************************************************
     * Spine Runtimes Software License
     * Version 2.1

    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);
    }

    2. 使用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);


    * 多了一个加红的函数

    3. 使用

    local pos = arm:getBonePosition(tbPos)
                    print("pos = ", pos.x, pos.y);


    结果:

    pos =     8.8648509979248    89.864677429199
  • 相关阅读:
    获取指定字符传的长度或者高度
    检测身份证号码是否合法
    tabbar添加小红点
    单例的简单构造
    iOS程序内发短信
    多项式加法运算 使用链表实现
    链表的数组实现
    使用链表实现堆栈
    使用链表实现堆栈
    求最大子列和的几种方法
  • 原文地址:https://www.cnblogs.com/pk-run/p/4670617.html
Copyright © 2011-2022 走看看