MyGame.h中声明动画函数:

class MyGame : public cocos2d::Layer
{
public:
 static Scene* createScene();
    void Updatetime(float t);
   virtual bool init();
   void logic(float dt);

........
   cocos2d::Animate* createAnimate1();
   CREATE_FUNC(MyGame);

}

MyGame.cpp:

#include "MyGame.h"

#include "cocostudio/CocoStudio.h"

#include "ui/CocosGUI.h"

#include "cocos2d.h"

#include<iostream>

using namespace std;

USING_NS_CC;

using namespace cocos2d;

using namespace cocostudio::timeline;

cocos2d::Animate* MyGame::createAnimate1() {

auto animation = Animation::create();

for (int i = 1; i <= 4; i++)  {   //四张图片(用于组成动画)

animation->addSpriteFrameWithFile(StringUtils::format("run%d.png", i));

}

animation->setDelayPerUnit(3.0f / 15.0f);

//回到原始状态

animation->setRestoreOriginalFrame(true);

auto animate = Animate::create(animation);

return animate;

}

Scene* MyGame::createScene() {

// 'scene' is an autorelease object

auto scene = Scene::create();

// 'layer' is an autorelease object

auto layer = MyGame::create();

// add layer as a child to scene

scene->addChild(layer);

// return the scene  return scene; }

bool MyGame::init() {

// 1. super init first

if (!Layer::init())

{

return false;

}

ball = Sprite::create("run1.png");
 ball->setPosition(Vec2(visibleSize.width / 2, visibleSize.height / 2));
 this->addChild(ball,2);

//点击btn0,则运行击打棒球动画

btn0->addClickEventListener([&](Ref* pSender) {
  ball->runAction(createAnimate1());
 });

return true;

}

注意:若按钮事件中包含切换场景事件,则需要在按钮事件中添加schedule函数,否则切换场景后,动画还来不及生成,再次点击按钮出发按钮事件,则动画不会执行,即无反应

具体代码如下:

//为按钮添加触摸事件
 btn0->addTouchEventListener([&, btn0, btn1, btn2](Ref* pSender, Widget::TouchEventType type) {
  switch (type)
  {
  case Widget::TouchEventType::BEGAN:
   btn0->setScale(1.02);
   break;
  case Widget::TouchEventType::ENDED:
   btn0->setScale(1);
   btn1->setTouchEnabled(false);
   btn2->setTouchEnabled(false);
   .......

if (r[0] == 3 || delegate1->restartnum == 0)
   {
   ..........

//切换场景时不能单单写一句代码 Director::getInstance()->replaceScene(GameOver::createScene());

//而应该写个schedule函数用于缓冲时间

schedule([&](float ft) {
     unschedule("GameOver");
     Director::getInstance()->replaceScene(GameOver::createScene());
    },1,0,0,"GameOver");
   }
   else
    schedule([&](float ft) {
    unschedule("newGame");
    Director::getInstance()->replaceScene(MyGame::createScene());
   },1, 0, 0, "newGame");
   }
  });

cocos2d-x游戏开发之动画的更多相关文章

  1. iOS cocos2d 2游戏开发实战(第3版)书评

    2013是游戏爆发的一年,手游用户也是飞速暴增.虽然自己不做游戏,但也是时刻了解手机应用开发的新动向.看到CSDN的"写书评得技术图书赢下载分"活动,就申请了一本<iOS c ...

  2. Android游戏开发研究帧动画实现

     1.动画的原则框架        帧的动画帧的动画顾名思义,画就是帧动画. 帧动画和我们小时候看的动画片的原理是一样的,在同样区域高速切换图片给人们呈现一种视觉的假象感觉像是在播放动画,事实上只 ...

  3. (转载)如何学好iphone游戏开发

    转自:http://www.cnblogs.com/zilongshanren/archive/2011/09/19/2181558.html 自从发布<如何学习iphone游戏开发>到 ...

  4. [libGDX游戏开发教程]使用libGDX进行游戏开发(1)-游戏设计

    声明:<使用Libgdx进行游戏开发>是一个系列,文章的原文是<Learning Libgdx Game Development>,大家请周知.后续的文章连接在这里 使用Lib ...

  5. 【Cocos2D研究院之游戏开发】

    http://www.xuanyusong.com/archives/category/ios/cocos2d_game 分类目录归档:[Cocos2D研究院之游戏开发]   201211-19 Co ...

  6. 【读书笔记《Android游戏编程之从零开始》】16.游戏开发基础(动画)

    1. Animation动画   在Android 中,系统提供了动画类 Animation ,其中又分为四种动画效果: ● AlphaAnimation:透明度渐变动画 ● ScaleAnimati ...

  7. 《MFC游戏开发》笔记六 图像双缓冲技术:实现一个流畅的动画

    本系列文章由七十一雾央编写,转载请注明出处.  http://blog.csdn.net/u011371356/article/details/9334121 作者:七十一雾央 新浪微博:http:/ ...

  8. 《MFC游戏开发》笔记五 定时器和简单动画

    本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9332377 作者:七十一雾央 新浪微博:http:// ...

  9. cocos2d 游戏开发实战

    文章转自:http://uliweb.clkg.org/tutorial/read/40 6   cocos2d 游戏开发实战 6.1   创建cocos2d项目 6.2   cocos2d v3 & ...

随机推荐

  1. go安装windows源码

    直接安装就好,下面是安装地址http://pan.baidu.com/s/1gdDFi9t

  2. Redis学习笔记(1)-Key

    package cn.com; import java.text.ParseException; import java.util.List; import java.util.Set; import ...

  3. 【Android测试】【随笔】与 “58同城” 测试开发交流

    ◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/5384698.html 初衷 一直都有一个这样的想法: 虽然 ...

  4. express 查看版本号

    新安装了express,但是当查看版本号输入: express -v 时出现如下错误: 网上查找了相关资料才发现express查看版本 的命令是 express -V (即V大写) 再次尝试: 发现同 ...

  5. 玩儿了一下django User authentication

    五一在家,VPN不能链接了,而项目在本地run的过程中,又需要链接公司的SSO server才能login.下雨,不想去公司,又不得不在家做task,只能想办法避开SSO login,以前知道djan ...

  6. Top Five Communication Skills for Project Managers

    Research among project managers globally identifies top communication skills for leading teams. Lead ...

  7. c#中DropDownList控件绑定枚举数据

    c# asp.net 中DropDownList控件绑定枚举数据 1.枚举(enum)代码: private enum heros { 德玛 = , 皇子 = , 大头 = , 剑圣 = , } 如果 ...

  8. web前端学习网址

    最近一次电脑崩溃,重装系统所有在浏览器的网址,烟霄云散了…… 手册网址: http://www.shouce.ren/api/index demo学习网址: http://www.w3cplus.co ...

  9. XtraBackup2.3.3安装配置使用(innobakupex)

    通过使用percona公司的xtrabackup备份还原数据库,并完成搭建mysql主从数据库. 一.XtraBackup下载安装部分. 1.安装依赖软件. [root@localhost ~]# y ...

  10. Linux信号处理

    给进程设置僵尸状态的目的是维护子进程的信息,以便父进程在以后某个时间获取.这些信息包括子进程的进程ID.终止状态以及资源利用信息(CPU时间,内存使用量等等).如果一个进程终止,而该进程有子进程处于僵 ...