由于热更新的原因,现在好多cocos2dx项目都会使用lua/js脚本来开发,这篇讲下如何在cocos2dx-lua项目中使用DB(dragonbones,龙骨)。 这里假设已经建好了cocos2dx的lua项目,将DB放到了指定目录,并且lua绑定已经做完了。如果以上步骤没有做完,请看这里。
DB在lua项目中的使用和在C++项目中使用基本一样,这里列下不同点:
- 事件侦听方式修改
- 数据类在lua中基本得不到
- 某些带有
void*
的接口在lua中不可用
虽然有些API在lua中不可用,但是基本使用上没有大问题。
所有DB的类都映射到db
对象中,比如dragonbones::DBCCArmatureNode
映射为db.DBCCArmatureNode
。
创建DBCCArmatrueNode
下面创建一个"dragonBoy"的示例并播放walk动作,代码很简单,跟C++中使用一样,只是编写方式变了下。
local factory = db.DBCCFactory:getInstance() local dbnode = factory:buildArmatureNode("dragonBoy") dbnode:getAnimation():gotoAndPlay("walk") addChild(dbnode)
添加事件
添加事件跟C++中不一样了,在lua中事件被分成了两类:动画事件和帧事件。 其实还有DB还支持声音事件,而且C++中也实现了,只是感觉声音事件没有那么重要,完全可以用帧事件代替,所以就没有提供帧事件的lua接口。
-- @param table event -- db.DBCCArmature armature -- db.DBCCArmatureNode armatureNode -- int type 对应于dragonbones::EventData::EventType -- string boneName 仅在帧事件中有效 -- string animationName -- string frameLabel 仅在帧事件中有效 -- bool isLastAnimation local function onEvent( event ) end -- 注册动画事件 armatureNode:registerAnimationEventHandler(onEvent) -- 注册帧事件 armatureNode:registerFrameEventHandler(onEvent)
» 转载请注明来源:www.litefeel.com » 《如何在lua项目中使用dragonbones》
» 本文链接地址:https://www.litefeel.com/how-to-use-dragonbones-in-lua/
» 订阅本站:www.litefeel.com/feed/
» Host on Linode VPS
» 本文链接地址:https://www.litefeel.com/how-to-use-dragonbones-in-lua/
» 订阅本站:www.litefeel.com/feed/
» Host on Linode VPS
This post was last modified on 2019 年 02 月 25 日 01:34
View Comments (6)
新版本的dragonbones cpp改动比较大,博主能否更新下?自己尝试了下,都不成功T_T,主要是lua绑定这块的
新手求教,动画数据文件怎么加载呢?设计骨骼动画时使用官方的 dragonbones导出的json或者xml文件
xcode 上db怎么设置,库添加了搜索路径添加了然后 db目录树混乱 报错
@crazyaugust
registerAnimationEventHandler最新版的接受一个table参数,就是现在这篇文章上的形式。
我看到你的C++版本里用的是customevent,但是lua你懂的,,不给用。。。虽然我自己写了cpp到lua的customevent,但是我是写在表层工程了,要挪到这里还是有点蛋疼的。。。。
请问registerAnimationEventHandler在最新的版本是被移除了么?我绑定到lua后所有逻辑全部正常唯独看不到registerAnimationEventHandler方法。。。找了半天也没找到其他类似方法,我不想改底层啊