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();
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • cocos2d-x学习笔记(19)--label 、label atlas
  • cocos2d-x学习笔记(23)--地图的使用3--CCTMXLayer
  • Cocos2d-x学习(一):HelloWorld
  • cocos2dx在xcode下开发,编译到android上(2)
  • cocos2d 设置屏幕默认方向
  • Cocos2d-x 2.0 之 Actions “三板斧” 之一
  • cocos2d-x学习笔记(22)--地图的使用2(TMX) --Z-Order、AnchorPoi
  • cocos2d-x学习笔记(18)--游戏打包(windows平台)
  • cocos2d-x学习笔记(16)--spritesheet(精灵表单)
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1