windows开发cocos2d-x系列(3)— 舞动你的精灵

前言

  上一篇介绍了HelloWorld程序,这次我们来介绍一个很重要的元素——精灵(Sprites)。

精灵是什么?

  精灵(Sprites)是任何游戏的一个核心元素。我们需要他们。在游戏中我们经常喜欢用它来自作和播放角色。它可以移动,旋转,缩放,执行动画,并接受其他转换。Cocos2dx的Sprite由Texure,frame和animation组成,由openes负责渲染。简单过程可描述为:使用Texture2D加载图片,可以用Texture2D生成对应的SpriteFrame(精灵帧),将SpriteFrame添加到Animation生成动画数据,用Animation生成Animate(就是最终的动画动作),最后用Sprite执行这个动作。有时候,精灵可以充当游戏的背景,可以是游戏中的主角,也可以是无恶不做的怪物。其实,它就是一张图片,但其性能开销低,经常被用来设置游戏中大部分图片资源。

创建精灵

  

创建精灵的几种方式:

  • 直接创建
auto sprite = Sprite::create("HelloWorld.png");
this->addChild(sprite,0);
  • 使用纹理来创建精灵

  有时候,为了让图片资源更小,会根据一张图片来创建不同的CCSprite,这样需要首先通过CCTextureCache加载图片到图片纹理的缓存,然后从缓存获取这张图片的CCTexture2D对象,根据这个对象来创建CCSprite,代码如下:

auto sprite1 = Sprite::createWithTexture(TextureCache::getInstance()->addImage("HelloWorld.png"));
this->addChild(sprite1, 0);
  • 使用精灵帧来创建精灵

  利用帧缓存中的一帧的名称声称一个对象,适合于plist打包好的文件

CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("test.plist");
auto sprite2=Sprite::createWithSpriteFrameName("HelloWorld.png");  
this->addChild(sprite2, 0);

  

在Cocos2dx中实现精灵显示的基本过程如下:

//创建Scene
auto scene = Scene::create();
//创建层
auto layer = HelloWorld::create();
//把层加入场景中
scene->addChild(layer);
//创建一个精灵
auto sprite = Sprite::create("HelloWorld.png");
//把精灵加到层里
layer->addChild(sprite, 0)

开始舞动吧!

  在介绍action之前,先说明一个cocos2d-x 中坐标系的概念:在场景中以左下角为坐标原点,从左到右为x方向,从下到上为y方向,明白了这个,我们来简单介绍一下动作族谱中的几个常用成员吧。

  •   MoveTo(移动节点对象到位置x,y。x,y是绝对坐标,通过修改它的位置属性来改变它们的值)

    /* 创建精灵 */
    Sprite* sprite=Sprite::create("test.png");
    /* 创建一个0.9秒后移动到x:250,y:150点的动作 */
    MoveTo* moveTo = MoveTo::create(0.9f, Point(250, 150));
    /* 执行动作 */
    sprite->runAction(moveTo);
  •   ScaleTo(缩放动作)

    /* 创建精灵 */
    Sprite* sprite=Sprite::create("test.png");
    /* 创建一个3秒后宽度和高度都放大成2倍的动作 */
    ScaleTo* scaleTo = ScaleTo::create(3.0f, 2.0f, 2.0f);
    /* 执行动作 */
    sprite->runAction(scaleTo);
  •   Blink(闪烁动作)

    /* 创建精灵 */
    Sprite* sprite=Sprite::create("test.png");
    /* 创建一个3秒内产闪烁3次的动作 */
    Blink* blink = Blink::create(3.0f, 3);
    /* 执行动作 */
    sprite->runAction(blink);
  •   BezierTo(贝塞尔曲线动作)

    /* 创建精灵 */
    Sprite* sprite = Sprite::create("sprite.png");
    sprite->setPosition(Point(50, 180));
    this->addChild(sprite, 1, TAG_SPRITE);
    /* 创建贝塞尔曲线的配置 */
    ccBezierConfig bezier;
    bezier.controlPoint_1 = Point(100, 0);		//波谷偏向值
    bezier.controlPoint_2 = Point(200, 250);	//波峰偏向值
    bezier.endPosition = Point(300, 0);		//动作终点
    /* 创建CCBezierTo动作对象 */
    BezierTo*  bezierTo = BezierTo::create(4.0f, bezier);
    /* 执行动作 */
    sprite->runAction(bezierTo);
    this->scheduleUpdate();
  •   RepeatForever(重复执行)

     /* 创建一个精灵 */
    Sprite* sprite = Sprite::create("sprite.png");
    sprite->setPosition(Point(visibleSize.width / 2, visibleSize.height / 2));
    this->addChild(sprite);
    /* 创建一个CCJumpBy动作对象 */
    JumpBy* jumpBy = JumpBy::create(3.0f, Point(50, 1), 100, 1);
    /* 以jumpBy为参数,创建一个永久性的重复动作 */
    RepeatForever* repeatForeverAction = RepeatForever::create(jumpBy);sprite->runAction(repeatForeverAction);
  • Sequence(组合动作,按先后顺序执行)
    /* 创建一个精灵 */
    Sprite* sprite = Sprite::create("sprite.png");
    sprite->setPosition(Point(visibleSize.width / 2, visibleSize.height / 2));
    this->addChild(sprite);
    /* 创建一个移动动作对象 */
    MoveBy* moveBy = MoveBy::create(2.2f, Point(40, 20));
    /* 创建一个弹跳动作对象,弹跳高度100,弹跳次数5 */
    JumpBy* jumpBy = JumpBy::create(3.0f, Point(50, 1), 100, 5);
    /* 创建一个旋转动作对象 */
    RotateBy* rotateBy = RotateBy::create(2.5f, 220, 10);
    /* 创建组合动作对象,将所有动作连起来 */
    Action* actions = Sequence::create(moveBy, jumpBy, rotateBy, NULL);
    sprite->runAction(actions);

  一般来说每个动作都是成对的,都有相应的To跟By,两者有绝对和相对之分。最后是一张动作家族的族谱图:

时间: 2025-01-31 08:48:31

windows开发cocos2d-x系列(3)— 舞动你的精灵的相关文章

gcc for Windows 开发环境介绍

导读: 在Windows操作系统下的gcc 第一节 GCC家族概览 GCC是一个原本用于Unix-like系统下编程的编译器. 只是,如今GCC也有了很多Win32下的移植版本号.所以,或许对于很多Windows开发人员来说,GCC还是一个比較陌生的东西.所以,我希望通过这章的叙述,让你--一个Windows开发人员对GCC这一个优秀的编译器有一个大概的了解. 历史 GCC是GNU公社的一个项目.是一个用于编程开发的自由编译器.最初,GCC仅仅是一个C语言编译器,他是GNU C Compiler

java web开发环境配置系列(二)安装tomcat

在今天,读书有时是件"麻烦"事.它需要你付出时间,付出精力,还要付出一份心境.--仅以<java web开发环境配置系列>来祭奠那逝去的--1.下载tomcat压缩包,进入官网http://tomcat.apache.org/,官网左侧有对应的下载列表,选择适合自己的版本,进入下载页面,这里下载的是64-bit Windows zip 2.下载后,解压到指定的文件目录中,如:D:\Program Files\tomcat 3.配置环境变量(右击"我的电脑"

时序图与状态图(Rose) - Windows XP经典软件系列

最近开始了自己高级数据结构之旅,在这次旅行中,我将持续把一些高级的数据结构从理论到编码都过一遍,同时通过博客形式分享出来,希望大家指出不足之处! 二叉排序树是一种动态排序的数据结构,支持插入.删除.查找等操作,且平均时间复杂度为O(log(N)),但是普通二叉排序树不能保证树退化为一颗分支的情况,此时最坏情况下的时间复杂度为O(N).此时,平衡二叉树的产生了.平衡二叉树是一种动态调整平衡的数据结构,但理想的平衡二叉树很难,于是人们使用AVL.红黑树.Treap.伸展树等来替代平衡二叉树,这些数据

类图(Rose) - Windows XP经典软件系列

最近开始了自己高级数据结构之旅,在这次旅行中,我将持续把一些高级的数据结构从理论到编码都过一遍,同时通过博客形式分享出来,希望大家指出不足之处! 二叉排序树是一种动态排序的数据结构,支持插入.删除.查找等操作,且平均时间复杂度为O(log(N)),但是普通二叉排序树不能保证树退化为一颗分支的情况,此时最坏情况下的时间复杂度为O(N).此时,平衡二叉树的产生了.平衡二叉树是一种动态调整平衡的数据结构,但理想的平衡二叉树很难,于是人们使用AVL.红黑树.Treap.伸展树等来替代平衡二叉树,这些数据

GameBuilder开发游戏应用系列之100行代码实现贪吃蛇

在线预览:http://osgames.duapp.com/apprun.html?appid=osgames1-801422234293697 在线编辑:http://osgames.duapp.com/gamebuilder.php?appid=osgames1-801422234293697 微信扫描: 运行截图: 除了重力感应游戏,GameBuilder开发传统的游戏也毫不逊色,作为一个怀旧的人,总是对这类游戏情有独钟. 贪吃蛇主要靠一个[UICanvas]来实现,前面一片博客GameB

[Axis2与Eclipse整合开发Web Service系列之二] Top-Down方式,通过WSDL逆向生成服务端(续)

前言 本篇是承接上一篇: [Axis2与Eclipse整合开发Web Service系列之二] Top-Down方式,通过WSDL逆向生成服务端 在上一篇粗略地介绍了如何使用Top-Down的方式创建一个web service .  但是对于如何部署及调用,以及一些细节的部分基本上没有介绍. 应某些博友的要求, 也适逢自己有空, 接下来就详细介绍一下整个部分如何进行. 环境准备 JDK 肯定要安装了, 这个就不多讲了. 1. eclipse  3.5.2 对eclipse 版本的要求其实不是很严

GameBuilder开发游戏应用系列之70行代码实现套圆环

在线预览:http://osgames.duapp.com/apprun.html?appid=osgames1-551421721381542 在线编辑:http://osgames.duapp.com/gamebuilder.php?appid=osgames1-551421721381542 微信扫描: 运行截图: 套圆环是火舞上的一款非常火爆的游戏,它是FlappyBird的变种,也是重力感应类的游戏,不同的是碰撞检测从FlappyBird的钢管,变成中间的一根绳子. 这根绳子在Game

2017 CVTE Windows开发一面 3.7

下午3点接到了个广州打过来的电话,电话面试总体时间比较短,35分钟. 考察内容: 1.讲实习: 因人而异,将了之前公司做的项目,刚好和面的岗位匹配,面试官听完之后还不忘垂壁一下他们的产品. 2.C#事件绑定 控件绑定事件,没答出来,object sender, MouseEventArgs e,这样的.网上搜了下,估计还会问如何清除绑定事件的所有方法. 3.C# 的delegete委托,类似C++的函数指针,这个没答出来.  C#中的委托类似于C或C++中的函数指针.使用委托使程序员可以将方法引

Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例【附详细代码】

http://blog.csdn.net/xiefu5hh/article/details/51707529 Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例[附详细代码] 标签: SparkECLIPSEJAVAMAVENwindows 2016-06-18 22:35 405人阅读 评论(0) 收藏 举报  分类: spark(5)  版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 前言 本文旨在记录初学Spark时,根据官网快速

【0002(基础)】Skyline二次开发入门经典系列教程&mdash;&mdash;目录

这段时间由于个人事务太多,以至于没有按照时间更新系列教程,本人将尽快补上所欠章节,在此说声抱歉!   这一章在我心目中占有很重要的地位,因为我想通过这一章的内容来确定整个系列的大致走向.然而在整理的过程中,发现现实远比想象要复杂得多:首先想尽可能介绍较多的知识点,其次又要考虑学习的简易程度,再次又要确定顺当的知识体系流程-- 由于暂时的考虑无论如何也是不可能完备的,因此为了不影响后面教程的编写,暂定把这一章作为一个[流动性质]的可变章节,在编写每一章时,动态根据实际情况修改(添加.移动.修改)系