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
  • 相关阅读:
    Metrics.NET
    DotNet Multithread
    WebApi框架概述
    RESTful API 概述
    MvcPager分页控件以适用Bootstrap效果
    Windows集群网络负载均衡
    学习Oracle日记(10)-数据类型
    在Eclipse中使用Junit4进行单元测试
    Android--学习笔记--02--AndroidStudio的设置
    Android--学习笔记--01--开发软件安装
  • 原文地址:https://www.cnblogs.com/pk-run/p/4670617.html
Copyright © 2011-2022 走看看