cocos2d-x-3.0 alpha1与C++11练习十:飞镖忍者,在WelcomeScene
来源:未知 责任编辑:责任编辑 发表时间:2014-02-02 17:44 点击:次
蜗牛准备在WelcomeScene屏添加一个动画,在显示时,自动播放一次。通过查找教程,了解到这些实现技巧:
p>
p>cocostudio是支持动画与骨骼动画编辑的,使用其AnimationEditor可以做到。
p>在AnimationEditor中,分为形体模式与动画模式两种模式。前者用于常规编辑,摆放元件,添加骨骼点等。在单击右上角形体模式后,可以切换至动画模式,相对形体模式,动画模式多了一个时间轴,类似于Flash的时间轴。从产品角度讲,为什么分为两种模式?而不是在一种模式中让用户搞定所有事情,如Flash一般?
p>在形体模式时,与骨骼绑定的工具按钮有两个:
p>
p>其中,1为显示/隐藏骨骼按钮,用于切换骨骼示意图是否在场景中显示。2为开始创建和停止创建骨骼按钮。
p>创建骨骼元件分为以下几步目前:
p>将图片先摆放在场景中
p>单击开始创建骨骼按钮
p>在场景中随意单击,将出现十字形式的示意图;在按下时,亦可向一边拖拉。
p>单击完成创建骨骼按钮
p>选中图片,打开右键菜单,选择“绑定到骨头上”,然后单击上一次创建的骨头,即完成绑定。这时候,在对象面板中,可以看到,图片对象与骨头对象已经自动合二为一了。
p>选择一个骨头,右键选择“绑定父关系”,选择另一个骨头,绑定它的上一级,以添加约束。
p>在cocostudio中,创建Armature之后,将其导出,添加进xcode的Resources目录。加载Armation,与加载Widget是不同的。cocos2d-x 3有ArmatureDataManager,Armature,Animation三层对象,用于支持动画的加载与播放。首先是将json文件添加进ArmatureManager中,之后便是使用名称创建。
p>Armature是一个动画集合,包括多个Animation动画集合,每一个Animation均有一个名字。在AnimationEditor中,在动画列表面板中,有一个动画名称,这个名称可以手动更改,便是在调用Armature的play方法时,需要传入的参数,以指定播放哪一个动画。
p>在Armature播放动画后,是通过事件回调函数,得知Animation的状态的。回调函数的定义为:
p>
p>movementCallback(Armature * armature, MovementEventType type, const char * name)
p>
p>
p>1,准备UI
p>使用cocostudio创建一个骨头动画,导出,在xcode中引入
p>
p>
p>
p>2,实现代码
p>在WelcomeScene.cpp中init中,return之前,添加以下代码:
p>
p>
p>//首次载入Armature
p>ArmatureDataManager::getInstance()->addArmatureFileInfo("NewProject1.ExportJson");
p>//创建并添加Armature
p>Armature *armature = Armature::create("NewProject1");
p>Size winSize = Director::getInstance()->getWinSize();
p>armature->setPosition(Point(winSize.width/2, winSize.height/2));
p>this->addChild(armature);
p>//播放hit动画
p>armature->getAnimation()->setMovementEventCallFunc(this, movementEvent_selector( WelcomeScene::hitMovementCallback ));
p>armature->getAnimation()->play("hit");
p>
p>
p>这里用到了一个hitMovementCallback回调函数,先在头文件中定义,再在cpp文件中实现它:
p>
p>void WelcomeScene::hitMovementCallback(Armature* armature, MovementEventType type, const char * name){
p> printf("movement callback name:%s \n",name);
p> switch (type) {
p> case cocostudio::LOOP_COMPLETE:
p> armature->getAnimation()->stop();
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>