`
南头一霸
  • 浏览: 15890 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Cocos2d-x3.2 Animate帧动画

 
阅读更多

//GameScene.h
 
#include "cocos2d.h"
 
class GameScene : public cocos2d::Layer
{
public:
    static cocos2d::Scene* createScene();
     
    virtual bool init();
     
    void menuCallback(cocos2d::Ref* pSender);
     
    CREATE_FUNC(GameScene);
};

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
//GameScene.cpp
 
#include "GameScene.h"
 
USING_NS_CC;
 
cocos2d::Scene* GameScene::createScene()
{
    auto scene = Scene::create();   //创建一个场景
    auto layer = GameScene::create();   //创建一个图层
    scene->addChild(layer);
    return scene;
}
 
//初始化当前的图层
bool GameScene::init()
{
    if(!Layer::init())      //初始化父类
        return false;
     
    //获取屏幕大小
    Size visibleSize = Director::getInstance()->getVisibleSize();
    //auto size = Director::getInstance()->getWinSize();
 
    //帧动画的创建
    //方式一,通过多张图片来创建
    auto sprite1 = Sprite::create("grossini_dance_05.png");
    sprite1->setPosition(Vec2(visibleSize.width*0.3, visibleSize.height/2));
    this->addChild(sprite1);
     
    //创建帧动画序列,名词形式
    auto animation = Animation::create();
    for (int i=5; i<11; i++)
    {
        char szName[100] = {0};
        sprintf(szName, "grossini_dance_%02d.png", i);
        animation->addSpriteFrameWithFile(szName);
    }
    //设置帧动画属性
    animation->setDelayPerUnit(2.0f / 6);      //每一帧停留的时间,2秒时间完成6幅图片显示,切记要写成2.0f形式!
    animation->setRestoreOriginalFrame(true);       //播放完后回到第一帧
     
    auto animate = Animate::create(animation);
    sprite1->runAction(RepeatForever::create(animate));
     
     
    //方式二,通过一张集合的图片来创建
    //创建2D纹理
    auto texture = Director::getInstance()->getTextureCache()->addImage("dragon_animation.png");
    //建立图片帧
    auto frame0 = SpriteFrame::createWithTexture(texture, Rect(132*0, 132*0, 132, 132));
    auto frame1 = SpriteFrame::createWithTexture(texture, Rect(132*1, 132*0, 132, 132));
    auto frame2 = SpriteFrame::createWithTexture(texture, Rect(132*2, 132*0, 132, 132));
    auto frame3 = SpriteFrame::createWithTexture(texture, Rect(132*3, 132*0, 132, 132));
    auto frame4 = SpriteFrame::createWithTexture(texture, Rect(132*0, 132*1, 132, 132));
    auto frame5 = SpriteFrame::createWithTexture(texture, Rect(132*1, 132*1, 132, 132));
     
    auto sprite2 = Sprite::createWithSpriteFrame(frame0);
    sprite2->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
    this->addChild(sprite2);
     
    //保存图片帧
    //Vector<cocos2d::AnimationFrame *> array;
    Vector<cocos2d::SpriteFrame *> array;
    array.pushBack(frame0);
    array.pushBack(frame1);
    array.pushBack(frame2);
    array.pushBack(frame3);
    array.pushBack(frame4);
    array.pushBack(frame5);
     
    auto animation2 = Animation::createWithSpriteFrames(array, 0.2f);   //此处createWithSpriteFrames()函数确实每帧间隔时间参数,需自行加上去!!!
    sprite2->runAction(RepeatForever::create(Animate::create(animation2)));
     
     
    //方式三,通过.plist 文件来创建
    auto cache = SpriteFrameCache::getInstance();
    cache->addSpriteFramesWithFile("animate.plist");
     
    auto sprite3 = Sprite::createWithSpriteFrameName("grossini_dance_05.png");
    sprite3->setPosition(Vec2(visibleSize.width*0.7, visibleSize.height/2));
    this->addChild(sprite3);
     
    Vector<cocos2d::SpriteFrame *> arr;
    char str[100] = {0};
    for (int i=1; i<15; i++)
    {
        sprintf(str, "grossini_dance_%02d.png", i);
        auto frame_2 = cache->SpriteFrameCache::getInstance()->getSpriteFrameByName(str);   //3.2版本有改变
        arr.pushBack(frame_2);
    }
     
    auto animation3 = Animation::createWithSpriteFrames(arr, 0.2f);     //此处也不要忘记加上时间间隔参数
    sprite3->runAction(RepeatForever::create(Animate::create(animation3)));
     
    return true;
}
分享到:
评论

相关推荐

    大富翁手机游戏开发实战基于Cocos2d-x3.2引擎

    资源名称:大富翁手机游戏开发实战基于Cocos2d-x3.2引擎内容简介:李德国编著的《大富翁手机游戏开发实战(基于 Cocos2d-x3.2引擎)》使用Cocos2d-x游戏引擎技术,带领读者一步一步从零开始进行大富翁移动游戏的开发...

    大富翁手机游戏开发实战 基于Cocos2d-x3.2引擎

    李德国编著的《大富翁手机游戏开发实战(基于 Cocos2d-x3.2引擎)》使用Cocos2d-x游戏引擎技术,带领读者一步一步从零开始进行大富翁移动游戏的开发。本书根据大富翁项目一一展开讲解游戏开发过程中涉及的各方面内容...

    Cocos2d-x3.2大富翁游戏项目开发apk测试版

    Cocos2d-x 3.2 大富翁游戏项目开发apk测试版

    cocos2d-x-3.2旧版引擎下载

    cocos2d-x-3.2下载,不多说。或者可以下载另一个资源 cocos引擎老版本集合(cocos2d-x-2.2.1 - 3.5) http://download.csdn.net/download/crazymagicdc/9982656

    cocos2d-x-3.2_richer(第四部分).rar

    这个压缩包“cocos2d-x-3.2_richer(第四部分).rar”包含了使用Cocos2d-x 3.2版本开发大富翁游戏项目的部分源代码,这将带我们深入理解如何在Cocos2d-x中构建一款完整的游戏。 1. **Cocos2d-x 3.2 版本特性** - ...

    cocos2d-x3.2贪吃蛇游戏代码与资源

    《cocos2d-x3.2贪吃蛇游戏代码与资源》是一款基于cocos2d-x3.2引擎开发的经典游戏——贪吃蛇。cocos2d-x是一个强大的开源跨平台2D游戏开发框架,使用C++语言编写,支持iOS、Android、Windows等多个操作系统。在这款...

    Cocos2d-X 3.2 API 文档

    Cocos2d-X 3.2 API 文档是开发者们深入了解和使用Cocos2d-X游戏引擎的关键资源。Cocos2d-X是一个跨平台的2D游戏开发框架,基于C++,并支持Objective-C和JavaScript等多种编程语言。版本3.2在前一版本的基础上进行了...

    cocos2d-x3.2版本2048和FlappyBird游戏源码

    通过分析这两个游戏的源码,开发者不仅可以掌握cocos2d-x3.2的基本用法,还能深入了解游戏开发中的核心概念,如游戏循环、用户交互、碰撞检测、动画制作等。这对于进一步开发自己的游戏项目具有极高的参考价值。在...

    cocos2d-x3.2 实现的华容道代码和资源

    《cocos2d-x3.2 实现的华容道代码和资源详解》 华容道,源于中国古代的棋类游戏,是一种极具挑战性的益智游戏。在编程领域,使用cocos2d-x3.2这个强大的游戏开发框架来实现华容道,可以让玩家在数字世界中体验这一...

    cocos2d-x3.2《魔塔》游戏源码

    《cocos2d-x3.2《魔塔》游戏源码》是一款基于cocos2d-x 3.2版本开发的2D角色扮演游戏,它展示了如何利用这一强大的游戏引擎来构建一个完整的游戏项目。cocos2d-x是一个开源的游戏开发框架,支持多种平台,包括iOS、...

    魔塔游戏(某教程的实例,已改成cocos2d-x 3.2)

    1. **cocos2d-x 3.2框架**:cocos2d-x提供了一个统一的API,用于创建2D游戏界面和动画效果。3.2版本引入了新的功能,如纹理 atlases优化、性能提升、内存管理改进等,使得开发者能更好地进行跨平台开发。 2. **游戏...

    cocos2d-x3.2横版游戏源码

    《cocos2d-x3.2横版游戏源码解析》 Cocos2d-x是一个开源的游戏开发框架,被广泛应用于跨平台2D游戏的开发,支持iOS、Android、Windows等多个操作系统。本篇将深入探讨cocos2d-x3.2版本在横版游戏开发中的应用,以及...

    cocos2d-x 3.2 使用cocos studio导出的帧动画

    本篇文章将深入探讨如何在cocos2d-x 3.2版本中利用cocos studio导出的帧动画资源,以及涉及到的相关知识点。 一、cocos2d-x简介 cocos2d-x是一个开源的游戏开发框架,基于C++编写,支持跨平台开发,包括iOS、...

    cocos2d-x 3.2 物理小游戏教程 block it

    《cocos2d-x 3.2 物理小游戏教程 "Block It" 深度解析》 在游戏开发领域,cocos2d-x 是一个广泛使用的开源游戏引擎,尤其适用于2D游戏的开发。本教程将聚焦于利用cocos2d-x 3.2 版本制作一款名为 "Block It" 的物理...

    Cocos2d-x 3.2 大富翁游戏项目开发ScrollView关卡选择

    在Cocos2d-x 3.2框架下开发大富翁游戏时,关卡选择界面是游戏用户体验的重要组成部分。ScrollView组件在这个过程中起到了关键作用,它允许用户在屏幕上滚动浏览多个关卡选项,使得游戏界面更加直观和易于操作。本文...

    Cocos2d-x 3.2 自动更新 -- 使用AssetsManager更新游戏资源包

    Cocos2d-x 3.2版本引入了AssetsManager,这是一个方便的工具,用于自动管理游戏资源的更新,确保玩家总是能够获取到最新的内容。 AssetsManager的工作原理主要是通过网络下载服务器上的资源清单文件(通常是XML格式...

    cocos2d-x-3.2文档

    在Cocos2d-x 3.2版本中,多点触摸功能被广泛应用于游戏和交互式应用中,允许用户同时处理多个触摸输入。这个功能的实现主要依赖于事件处理和事件分发机制的改进。以下是关于Cocos2d-x 3.2中多点触摸的详细说明: ...

    用cocos2d-x 3.2写的贪吃蛇

    《cocos2d-x 3.2实现的贪吃蛇游戏详解》 cocos2d-x是一款跨平台的游戏开发框架,它基于C++,并支持多种操作系统,包括iOS、Android、Windows等。在3.2版本中,cocos2d-x提供了一套完整的2D游戏开发工具和库,使得...

    炸弹人(cocos2d-x 3.2)

    3.2版本是Cocos2d-x的一个稳定版本,提供了丰富的功能和优化,包括渲染系统、物理引擎、动画支持、事件处理等,使得开发者能够更高效地创建游戏。 在源码中,`Classes`目录通常包含了游戏的主要逻辑代码。这里的类...

    Cocos2d-x 3.2 大富翁游戏项目开发-第七部分2

    在本篇中,我们将深入探讨使用Cocos2d-x 3.2框架开发大富翁游戏项目的第七部分。Cocos2d-x是一个广泛使用的开源游戏引擎,尤其适用于跨平台的游戏开发,支持iOS、Android以及Windows等多个平台。在这个项目中,我们...

Global site tag (gtag.js) - Google Analytics