cocos2d-x实战 C++卷 学习笔记--第5章 精灵

前言:

精灵类是Sprite类。它的子类有PhysicsSprite 和 Skin。

PhysicsSprite 是物理引擎精灵类,而Skin是皮肤精灵类,用于骨骼动画。

创建Sprite精灵对象

创建精灵对象有多种方式,常用的函数如下:

1)创建一个精灵对象,纹理等属性需要在创建后设置

static  Sprite*  create();

2)指定图片创建精灵

static  Sprite*  create(const  std::string&  filename);

3)指定图片和裁剪的矩形区域来创建精灵

static  Sprite*  create(const  std::string&  filename,  const  Rect&  rect);

4)指定纹理创建精灵

static  Sprite*  createWithTexture(Texture2D*  texture);

5)指定纹理和裁剪的矩形区域来创建精灵,第3个参数指定是否旋转纹理,默认不旋转

static  Sprite*  createWithTexture(Texture2D*  texture, const  Rect&  rect,  bool  rotated = false);

6)通过一个精灵帧对象创建另一个精灵对象

static  Sprite*  createWithSpriteFrame(SpriteFrame*  pSpriteFrame);

7)通过指定帧缓存中精灵帧名 创建 精灵对象

static  Sprite*  createWithSpriteFrameName(cosnt  std::string & spriteFrameName);  

代码示例:

 1    auto spbk = Sprite::create("background.png");
 2     //// 此处没有设置position,默认的位置是 左下角
 3     //spbk->setPosition(Point(origin.x + visibleSize.width / 2, origin.y + visibleSize.height / 2));
 4     spbk->setAnchorPoint(Point::ZERO);
 5     this->addChild(spbk, 0);
 6
 7     //// 使用 纹理对象(Texture2D) 创建Sprite对象.
 8     ///  Rect(float x, float y, float width, float height);
 9     // 参数rect是 tree1.png图片中,UI坐标系下,(604,38)坐标位置,宽302,高295的一个区域
10     auto tree1 = Sprite::create("tree1.png", Rect(604, 38, 302, 295));
11     tree1->setPosition(Point(200, 230));
12     this->addChild(tree1, 0);
13
14     Texture2D* cache = Director::getInstance()->getTextureCache()->addImage("tree1.png");
15     auto tree2 = Sprite::create();
16     tree2->setTexture(cache);
17     // 参数rect是 tree1.png图片中,UI坐标系下,(73,72)坐标位置,宽182,高270的一个区域
18     tree2->setTextureRect(Rect(73, 72, 182, 270));
19     tree2->setPosition(Point(500, 200));
20     this->addChild(tree2, 0);

通过 Director::getInstance()->getTextureCache() 函数可以获得 TextureCache 实例,TextureCache 的 addImage("tree1.png")函数可以创建纹理Texture2D对象,其中的tree1.png是纹理图片名。

时间: 2024-08-04 10:27:50

cocos2d-x实战 C++卷 学习笔记--第5章 精灵的相关文章

cocos2d-x实战 C++卷 学习笔记--第6章 场景与层

前言: 一个场景(Scene)是由多个层(Layer)组成,而且层的个数要至少是1,不能为0. 场景切换 场景切换相关函数 1)void  runWithScene(Scene*  scene) 该函数可以运行场景.只能在启动第一个场景时调用该函数.如果已经有一个场景运行,则不能调用该函数. 2)void  replaceScene(Scene*  scene) 切换到下一个场景.用一个新的场景替换当前场景,当前场景被终端释放. 3)void  pushScene(Scene*  scene)

cocos2d-x实战 C++卷 学习笔记--第4章 使用菜单

前言: 菜单中包含菜单项,菜单项类是 MenuItem ,每个菜单项都有三个基本状态:正常.选中和禁止. (MenuItem)菜单分类: (文本菜单)MenuItemLabel : MenuItemAtlasFont, MenuItemFont (精灵菜单)MenuItemSprite : MenuItemImage (开关菜单)MenuItemToggle 文本菜单 文本菜单是 菜单项 只能显示文本,文本菜单类包括 MenuItemLabel.MenuItemFont 和 MenuItemAt

cocos2d-x实战 C++卷 学习笔记--第7章 动作、特效(一)

前言: 介绍cocos2d-x中的动作.特效. 动作: 动作(action)包括基本动作和基本动作的组合,这些基本动作有缩放.移动.旋转等,而且这些动作变化的速度也可以设定. 动作类是 Action.它的类图如下: Action有3个子类,FiniteTimeAction 是一种受时间限制的动作,Follow 是一种允许精灵跟随另一个精灵的动作,Speed是在一个动作运行时改变其运动速率. 瞬时动作: 瞬时动作就是不等待立即执行的动作,瞬时动作的基类是ActionInstant.瞬时动作 Act

cocos2d-x实战 C++卷 学习笔记--第4章 使用标签

前言: 介绍cocos2d-x中 标签类. cocos2d-x中 标签类 主要有三种:LabelTTF, LabelAtlas, 和 LabelBMFont.此外,在Cocos2d-x 3.x之后推出了 新的标签类 Label. LabelTTF 标签类 LabelTTF是使用系统中的字体,它是最简单的标签类. create 静态函数完整定义:(此处只介绍一种常用的 create 静态方法) 1 static LabelTTF * create(const std::string& string

第131讲:Hadoop集群管理工具均衡器Balancer 实战详解学习笔记

第131讲:Hadoop集群管理工具均衡器Balancer 实战详解学习笔记 为什么需要均衡器呢? 随着集群运行,具体hdfs各个数据存储节点上的block可能分布得越来越不均衡,会导致运行作业时降低mapreduce的本地性. 分布式计算中精髓性的一名话:数据不动代码动.降低本地性对性能的影响是致使的,而且不能充分利用集群的资源,因为导致任务计算会集中在部分datanode上,更易导致故障. balancer是hadoop的一个守护进程.会将block从忙的datanode移动到闲的datan

第130讲:Hadoop集群管理工具DataBlockScanner 实战详解学习笔记

第130讲:Hadoop集群管理工具DataBlockScanner 实战详解学习笔记 DataBlockScanner在datanode上运行的block扫描器,定期检测当前datanode节点上所有的block,从而在客户端读到有问题的块前及时检测和修复有问题的块. 它有所有维护的块的列表,通过对块的列表依次的扫描,查看是否有校验问题或错误问题,它还有截流机制. 什么叫截流机制?DataBlockScanner扫描时会消耗大量的磁盘带宽,如果占用磁盘带宽太大,会有性能问题.所以它会只占用一小

java JDK8 学习笔记——第16章 整合数据库

第十六章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API中的接口会有数据库厂商操作,称为JDBC驱动程序. 2.JDBC标准主要分为两个部分:JDBC应用程序开发者接口和JDBC驱动程序开发者接口.应用程序需要联机数据库,其相关API主要在java.sql和javax.sql两个包中. 3.应用程序使用JDBC联机数据库的通用语法: Connection conn = DriverManager.g

【算法导论】学习笔记——第6章 堆排序

堆这个数据结构应用非常广泛,数字图像处理的算法里也见过.似乎记得以前老师上课说需要用树结构实现堆排序,看了一下算法导论才明白其精髓.堆虽然是一棵树,但显然没必要非得用树结构实现堆排序.堆排序的性质很好,算法时间复杂度为O(nlgn). 1. 堆排序的简要说明.二叉堆可以分为两种形式:最大堆和最小堆.在最大堆中,最大堆性质是指除了根以外的所有结点i都要满足: A[PARENT(i)] >= A[i]:在最小堆中,最小堆性质是指除了根以外的所有结点i都要满足: A[PARENT(i)] <= A[

APUE学习笔记:第九章 进程关系

9.1 引言 本章将更详尽地说明进程组以及POSIX.1引入的会话的概念.还将介绍登陆shell(登录时所调用的)和所有从登陆shell启动的进程之间的关系. 9.1 终端登陆 系统管理员创建通常名为/etc/ttys的文件,其中每个终端设备都有一行,每一行说明设备名传递给getty程序的参数.当系统自举时,内核创建进程ID为1的进程,依旧是init进程.init进程使系统进入多用户状态.init进程读文件/etc/ttys,对每一个允许登陆的终端设备,init调用一次fork,所生成的子进程则