CCSprite精灵的加载与常用操作

2024-04-24 10:48

本文主要是介绍CCSprite精灵的加载与常用操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

精灵是2D游戏中得主角,这次就总结一下cocos2d-x中精灵的使用。

一,加载

首先,创建一个变量 CCSprite *pSprite;

加载函数分为两组initWithXXXX和spriteWithXXXX,其主要的区别是使用initWithXXXX的手工作业,而spriteWithXXXX是纯自动化作业。在SpriteWithXXXX中,先分配内存,然后加载,最后加入到autorelease中。而前者只有加载的部分,分配内存以及释放都需要靠自己。下边全部以spriteWithXXXX函数说明。

1,从文件中直接加载

从文件中加载很简单,只需要 CCSprite::spriteWithFile("文件完整名称"); 其中文件名必须是完整路径,用cocos2d-x生成的项目中Resources目录为根目录。若有一个文件目录为..\Resources\chars\a.png 则 文件名部分就应该为"chars/a.png"。值得注意的是,在WINDOWS下,后缀名大写小写无所谓,但是在MAC下,后缀的大小写必须与文件完全一致,否则无法加载。

此函数还有一个重载函数,后边多一个CCRect参数,可以通过此参数设定加载图片中某个矩形区域。

2,间接加载

有些经常被用到或者需要频繁加载移除的一些资源,如果每次都从文件中加载,程序的效率会变得非常低,通常的做法是将这些文件先读到缓存中,然后再从缓存中加载。

CCTexture2D *pTexture = CCTextureCache::sharedTextureCache()->addImage(pszFilename);

这个函数将一个图片加入缓存并返回一个CCTexture2D的指针。然后就可以

pSprite = CCSprite::spriteWithTexture(pTexture);

如果一个资源已经被加入到了缓存,addImage是不会再加一遍的。程序中我很少会直接用spriteWithTexture这个函数,因为需要保存pTexture的指针。而在spriteWithFile函数中起内部就已经使用了上述过程。

另一种间接加载方法是利用SpriteFrame。SpriteFrame是把一个大的图片划分掉,每一个矩形区域就是一个SpriteFrame。其实如果这个SpriteFrame在大图中的矩形区域已知的话,可以直接使用CCTexture2D的方式,使用CCRect参数。SpriteFrame给我们提供了一种快捷,简便的方式,就是将这个矩形区域信息保存到plist文件中,并通过一个名称作为索引。生成这种大图也有很多工具,我使用过两种工具,一个是 Zwoptex 是一个在线的免费工具,另一个我常用的是 TexturePacker。这是一个收费软件,不过免费版也能满足基本的需要。这两种工具可以生成一个.plist文件和一个图片文件。存放的时候讲这两个关联的文件放在同一个目录下。在需要使用的时候,我们可以将它加载到缓存中:

CCSpriteFrameCache *pCache = CCSpriteFrameCache::sharedSpriteFrameCache();

pCache->addSpriteFramesWithFile("XXXX.plist");

其中plist文件的路径是完整路径。

然后可以用两种方式加载

pSprite = CCSprite::spriteWithSpriteFrame(pCache->spriteFrameByName(szFrameName));

pSprite = CCSprite::spriteWithSpriteFrameName(szFrameName);

看起来第一个函数比较麻烦,实际上,第二个函数调用的是第一个函数。。。。值得说明的是,这里的szFrameName不需要完整路径,而是文件名索引。

 

二,常用操作

精灵加载完了就改各种使用了。

1,锚点

锚点就是所有旋转,移动,缩放的参考点。cocos2-x中默认的锚点是中心点。锚点用比例来表示范围为0-1,(0,0)点代表左下点,(1,1)代表右上点。设置的函数为setAnchorPoint(ccp(0.5, 0.5));

2,旋转

setRotation(angle) 其中angle为角度不是弧度。正数为顺时针旋转,负数为逆时针旋转。

3,位置

setPosition(ccp(xPos, yPos)) xPos和yPos为相对于父节点锚点的位置。

4,缩放

setScale(s);   // 整体缩放

setScaleX(s); // 原图片坐标X轴缩放

setScaleY(s); // 原图片坐标Y轴缩放

s为比例,s = 1表示原尺寸。

5,倾斜

setSkewX(s); // 原图片坐标X轴倾斜

setSkewY(s); // 原图片坐标Y轴倾斜

X轴向右为正,Y轴向上为正。

6,透明度

setOpacity(s);

s范围0-255,0完全透明,255完全不透明。

7,可见

setIsVisible(bVisible)

bVisible为bool值true代表可见false代表不可见

8,翻转

setFlipX(bFlip);  // 水平翻转

setFlipY(bFlip);  // 竖直翻转

bFlip为true,则图片翻转,false不翻转。注意,翻转是针对原图片的操作,水平翻转相当于在图片编辑软件里水平翻转一样。不根据锚点进行翻转。翻转以后,设置的以前设置的锚点不会随着图片的翻转而改变。比如设置右下角为锚点,则翻转以后,锚点为翻转后的图片的右下角(是不是有点绕?)

最后,初始化完成后,不要忘了使用addChild加入到父节点,否则是不会显示的。


原文:http://www.cnblogs.com/w121640121/archive/2012/02/12/2348471.html

这篇关于CCSprite精灵的加载与常用操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/931542

相关文章

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE

python常用的正则表达式及作用

《python常用的正则表达式及作用》正则表达式是处理字符串的强大工具,Python通过re模块提供正则表达式支持,本文给大家介绍python常用的正则表达式及作用详解,感兴趣的朋友跟随小编一起看看吧... 目录python常用正则表达式及作用基本匹配模式常用正则表达式示例常用量词边界匹配分组和捕获常用re

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

MySQL追踪数据库表更新操作来源的全面指南

《MySQL追踪数据库表更新操作来源的全面指南》本文将以一个具体问题为例,如何监测哪个IP来源对数据库表statistics_test进行了UPDATE操作,文内探讨了多种方法,并提供了详细的代码... 目录引言1. 为什么需要监控数据库更新操作2. 方法1:启用数据库审计日志(1)mysql/mariad

springboot如何通过http动态操作xxl-job任务

《springboot如何通过http动态操作xxl-job任务》:本文主要介绍springboot如何通过http动态操作xxl-job任务的问题,具有很好的参考价值,希望对大家有所帮助,如有错... 目录springboot通过http动态操作xxl-job任务一、maven依赖二、配置文件三、xxl-

Spring如何使用注解@DependsOn控制Bean加载顺序

《Spring如何使用注解@DependsOn控制Bean加载顺序》:本文主要介绍Spring如何使用注解@DependsOn控制Bean加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录1.javascript 前言2. 代码实现总结1. 前言默认情况下,Spring加载Bean的顺

Oracle 数据库数据操作如何精通 INSERT, UPDATE, DELETE

《Oracle数据库数据操作如何精通INSERT,UPDATE,DELETE》在Oracle数据库中,对表内数据进行增加、修改和删除操作是通过数据操作语言来完成的,下面给大家介绍Oracle数... 目录思维导图一、插入数据 (INSERT)1.1 插入单行数据,指定所有列的值语法:1.2 插入单行数据,指

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

python判断文件是否存在常用的几种方式

《python判断文件是否存在常用的几种方式》在Python中我们在读写文件之前,首先要做的事情就是判断文件是否存在,否则很容易发生错误的情况,:本文主要介绍python判断文件是否存在常用的几种... 目录1. 使用 os.path.exists()2. 使用 os.path.isfile()3. 使用