近期项目要升级到Quick 3.3, 而且使用了Spine作为动画编辑器, 在此把升级过程中。有关quick 3.3 载入Spine遇到的坑在此记录一下。

1、Spine版本号问题

首先Quick 3.3集成的版本号并不是是官方最新版本号, 于是这就有可能会遇到一些比較奇怪的问题, 所以在这里建议最好使用Spine在github(https://github.com/EsotericSoftware/spine-runtimes

上使用最新版本号,版本号的替换也是相当easy。

先下载Spine-runtimes。拷贝例如以下目录下的文件。

【1】spine-c/src/spine 下全部文件

【2】spine-c/include/spine下全部文件

【3】spine-cocos2dx/3/src/spine 下全部文件

将quick 3.3官方下的全部spine下的文件覆盖

此时,用VS重编项目,这样, 在C++版本号下,就能够使用最新版的Spine功能了

2、导出Spine功能到Lua脚本

上面说的是在C++版本号下使用Spine, 可是我们用的quick框架,须要用到Lua代码,这里就要讲一下Spine的tolua问题了。

首先,请參考一下这篇文章:http://blog.k-res.net/archives/1750.html

以及书籍《我所理解的cocos2d-x》第18章也对Lua-bindinge 有所描写叙述,在此不反复讲。

打开项目文件下 framework/cocos2d-x/tools/tolua下,能够看到一堆。*.ini文件,这些都是须要导出的Spine代码函数,这里重点关注一下【genbindings.py】、【README.mdown】

readme.mdown是帮助文件。里面重点讲到,使用Tolua工具在window平台。 须要安装例如以下工具:

1、python2.7.3

2、安装Python插件:pyyaml

3、安装Python插件:pycheetah

4、安装并设置android-ndk-r9b, 并设置NDK_ROOT路径

安装完了之后,双击genbindings.py就能够生成供Lua使用的Spine 代码了。

3、注意事项

quick 3.3将一些Spine代码又一次命名了, 在framework/cocos2d-x/cocos/scripting/lua-binding/manual/spine

打开lua_cocos2dx_spine_manual.cpp文件。能够在里面找到这么一段代码:

static void extendCCSkeletonAnimation(lua_State* L)

{

lua_pushstring(L, “sp.SkeletonAnimation”);

lua_rawget(L, LUA_REGISTRYINDEX);

if (lua_istable(L,-1))

{

tolua_function(L, “create”, lua_cocos2dx_CCSkeletonAnimation_createWithFile);

tolua_function(L, “registerSpineEventHandler”, tolua_Cocos2d_CCSkeletonAnimation_registerSpineEventHandler00);

tolua_function(L, “unregisterSpineEventHandler”, tolua_Cocos2d_CCSkeletonAnimation_unregisterSpineEventHandler00);

tolua_function(L, “setBlendFunc”, tolua_spine_SkeletoneAnimation_setBlendFunc);

tolua_function(L, “addAnimation”, lua_cocos2dx_spine_SkeletonAnimation_addAnimation);

tolua_function(L, “setAnimation”, lua_cocos2dx_spine_SkeletonAnimation_setAnimation);

}

lua_pop(L, 1);

Because sp.SkeletonAnimation:create creat a LuaSkeletonAnimation object,so we need use LuaSkeletonAnimation typename for g_luaType*/
std::string typeName = typeid(LuaSkeletonAnimation).name();
g_luaType[typeName] = "sp.SkeletonAnimation";
g_typeCast["SkeletonAnimation"] = "sp.SkeletonAnimation";
}

关键看tolua_function。能够看到将createWithFile更换为create, 注冊脚本事件为registerSpineEventHandler

4、关于回调

切记不要在事件回调中,删除Spine节点对象, 由于删除自身之后。 兴许还会有其它操作。

我的做法是:在update中。设置一个能否够删除标记, 依据标记来推断是否删除spine节点对象,而事件响应回调函数中, 则是设置标记的。

至于Lua中,使用update, 能够使用Schedule调度.

quick 3.3载入Spine问题的更多相关文章

  1. quick-cocos2d-x的热更新机制实现

    quick-cocos2d-x的热更新机制实现 0 依赖 这里说的热更新,指的是客户端的更新. 大致的流程是,客户端在启动后访问更新api,根据更新api的反馈,下载更新资源,然后使用新的资源启动客户 ...

  2. quick lua 使用spine骨骼动画

    看下下面两个文件 <spine/SkeletonRenderer.h><spine/SkeletonAnimation.h> 1.lua中创建方法: sp.SkeletonAn ...

  3. [原]quick集成spine动画

    更新说明: 新增了骨骼绑定node用法 参考:http://blog.csdn.net/n5/article/details/21795265 在SkeletonRenderer.h 和cpp里面新加 ...

  4. quick cocos2dx lua 内存释放

    前言 对于内存的优化,网上有很多例子和教程.总体来说,就那么几种解决方案,在最后我会简单提下,这里先说下在quick中,对于图片的处理. 1.查看内存调试信息 对于quick框架的了解,我们可以参考\ ...

  5. Quick-Cocos2d-x v3.3 异步加载Spine方案 转

    Quick-Cocos2d-x v3.3 异步加载Spine方案 浩月难求也与2015-03-25 15:06:3441 次阅读 背景 项目中使用了Quick-Cocos2d-x 3.3,由于Spin ...

  6. 【Quick 3.3】资源脚本加密及热更新(三)热更新模块

    [Quick 3.3]资源脚本加密及热更新(三)热更新模块 注:本文基于Quick-cocos2dx-3.3版本编写 一.介绍 lua相对于c++开发的优点之一是代码可以在运行的时候才加载,基于此我们 ...

  7. Qt Quick 事件处理之信号与槽

    前面两篇文章<QML 语言基础>和<Qt Quick 简单教程>中我们介绍了 QML 语言的基本的语法和 Qt Quick 的常见元素,亲们,通过这两篇文章,您应该已经能够完毕 ...

  8. Qt Quick 组件和动态创建的对象具体的解释

    在<Qt Quick 事件处理之信号与槽>一文中介绍自己定义信号时,举了一个简单的样例.定义了一个颜色选择组件,当用户在组建内点击鼠标时,该组件会发出一个携带颜色值的信号,当时我使用 Co ...

  9. Android之SystemUI载入流程和NavigationBar的分析

    Android之SystemUI载入流程和NavigationBar的分析 本篇仅仅分析SystemUI的载入过程和SystemUI的当中的一个模块StatusBar的小模块NavigationBar ...

随机推荐

  1. 优动漫PAINT-绘制透明布料教程

    原是一篇日语教程,觉得挺不错的,就劳烦会日语的朋友帮忙翻译了,特此分享!希望可以帮助到大家在绘画上的学习!原教程转载优动漫官网. 作者:JaneMere 相关资讯还可以关注www.dongmansof ...

  2. Python的那些坑--------括号篇

    在Python中遇见了带不带括号的问题,我目前的是这三种,有问题请指出.如果有其他的,我后续会更新 一  函数带不带括号: def a(x): return x print(a) #不带括号调用的结果 ...

  3. (2016北京集训十三)【xsy1533】mushroom - bitset

    题解: 神题...我看到的时候直接吓懵了... 这是一道STL题...否则可能要写可持久化ETT或者可持久化Toptree? 用bitset来维护每个蘑菇上哪里有杂草,那么 对于操作1和操作2:可以预 ...

  4. UVA-1602 Lattice Animals 搜索问题(打表+set)

    题目链接 https://vjudge.net/problem/UVA-1602 紫书的一道例题,跟之前的很多题目有很多不同. 本题不像是一般的dfs或bfs这样的搜索套路,而是另一种枚举思路. 题意 ...

  5. 《Craking the Coding interview》python实现---01

    ###题目:给定一个字符串,判断其中是否有重复字母###思路:将重复的字符放入到list中,并进行计数统计###实现:伪代码.函数.类实现###伪代码:string=s #给定的字符串list=[] ...

  6. 洛谷 P1088 火星人 (全排列)

    直接调用next_permutation即可,向前的话可以调用prev_permutation #include<cstdio> #include<cctype> #inclu ...

  7. 紫书 习题 11-16 UVa 1669(树形dp)

    想了很久, 以为是网络流最大流, 后来建模建不出来, 无奈. 后来看了 https://blog.csdn.net/hao_zong_yin/article/details/79441180 感觉思路 ...

  8. COGS——T 803. [USACO Hol10] 政党 || 1776: [Usaco2010 Hol]cowpol 奶牛政坛

    http://www.lydsy.com/JudgeOnline/problem.php?id=1776||http://cogs.pro/cogs/problem/problem.php?pid=8 ...

  9. CodeForces 52B Right Triangles 矩阵上的计数

    题目链接:点击打开链接 题意: 问有多少个与矩阵边平行的直角三角形.且三角形的3个顶点都是* 对于 L形 或者_| 形的三角形.我们仅仅须要知道在_ 上方有多少个*就可以,下底边则任取2个 所以用l[ ...

  10. [转]GLTF-3D图形界的JPEG

    GLTF简介 1.glTF(GL TransmissionFormat),即图形语言交换格式,它是一种3D内容的格式标准,由Khronos Group管理(Khronos Group还管理着OpenG ...