cocos2D四---- CCSprite

在介绍CCSprite之前,先要理解游戏开发中的一个核心概念:精灵。精灵也称为游戏对象,它可以用来表示游戏中的任何物体,比如敌人、子弹、甚至是一个背景图片、一段文字。CCSprite可以说是在cocos2d中最常用的一个类,可以称之为"精灵类",它能够以图片的形式将精灵显示到屏幕上。


创建精灵

在谈怎么创建一个精灵之前,先了解下游戏开发中另一个核心概念:纹理。纹理其实就是用来描述物体表面细节的图形,也称为纹理贴图,把纹理按照特定的方式映射到物体表面上的时候能使物体看上去更加真实。我们将纹理映射到屏幕上即可显示对应的图形。


1.创建精灵最简单的方式就是给精灵指定一张图片文件,cocos2d会利用这张图片生成纹理对象(CCTexture2D)并加载到纹理缓存库中(CCTextureCache),最终由精灵来控制纹理显示在屏幕中的位置

[java] view plain copy
  1. //添加精灵到图层中
  2. -(id)init{
  3. if(self=[superinit]){
  4. CCSprite*sprite=[CCSpritespriteWithFile:@"lufy.png"];
  5. CGSizewinSize=[CCDirectorsharedDirector].winSize;
  6. sprite.position=ccp(winSize.width*0.5f,winSize.height*0.5f);
  7. [selfaddChild:sprite];
  8. }
  9. returnself;
  10. }
为了保证能够正常读取图片资源,要把你的图片文 件放在Resource文件夹中

运行效果:


其他常用设置

1> 设置精灵的不透明度

copy
    //大概为半透明
  1. sprite.opacity=125;

opacity的取值范围是0-255,0代表完全透明,255代表完全不透明



2> 给精灵着色

copy
    //红色
  1. sprite.color=ccc3(255,0,0); background-color:inherit">0);



3> 水平镜像

copy
    sprite.flipX=YES;


4> 垂直镜像

copy
    sprite.flipY=YES;


果flipX和flipY一起使用

copy
    sprite.flipX=YES;
  1. sprite.flipY=YES;


2.可以指定一个范围只加载图片的某个矩形区域

这张图片的原大小是100x100的

copy
    CCSprite*sprite=[CCSpritespriteWithFile:@"lufy.png"rect:CGRectMake(50,0); background-color:inherit">50)];

只加载了图片左上角50x50的区域


3.可以直接传入一个纹理对象(CCTexture2D)

copy
    //创建纹理对象
  1. CCTexture2D*texture=[[CCTextureCachesharedTextureCache]addImage:@"lufy.png"];
  2. //传入纹理对象,生成精灵
  3. CCSprite*sprite=[CCSpritespriteWithTexture:texture];

CCTextureCache是专门用来缓存CCTexture2D对象的,它内部有个NSMutableDictionary *textures_字典,key是图片名称,vale是CCTexture2D对象。当调用它的addImage:方法添加图片时,会先根据图片名查找字典中是否存在对应的CCTexture2D对象,如果有就直接返回;如果没有,就会根据图片名称去加载CCTexture2D对象,加载完毕后将CCTexture2D对象放入字典中。

或者指定一个范围只加载图片的某个矩形区域

copy
    CCSprite*sprite=[CCSpritespriteWithTexture:texturerect:CGRectMake(50)];

纹理的大小

目前位置,iOS设备只支持尺寸为"2的n次幂"的纹理,因此每张纹理的宽和高都只可能为:2、4、8、16、32、64、128、256、512、1024和2048像素。也就是说纹理的宽高只能是上述数值的组合,比如2x4,32x32,512x64等

我们在制作纹理图片的时候,最好图片的尺寸都符合上述要求,不然坏处多多。

比如,有一张260x260像素的32位色图,它本应该在内存中大概占270KB(260 x 260 x 32 / 8 = 270400B),但受纹理尺寸的限制,纹理的尺寸必须是2的n次幂,系统会自动生成一张最接近原图尺寸的(但不能偏小,要能包含原图像)、宽高都为2的n次幂的纹理,于是系统将生成一张512x512像素的纹理,所以最终会占用1MB的内存(512 x 512 x 32 / 8 = 1048576B),实际占用的内存竟然是所需内存的4倍。解决办法就是将这张260x260像素的图像改为256x256像素,系统也将生成256x256像素的纹理。


HD和SD图

iOS的像素分别率随设备的硬件而变化,iPhone第一次引入了高分辨率的视网膜屏幕(Retina显示屏幕),像素分辨率为960x640,刚好是前一代iPod和iPhone像素分辨率(480x320)的两倍。一般会将Retina显示屏幕使用的图像称为高分辨率(HD)图像,非Retina显示屏幕使用的图像称为标准分辨率(SD)图像。

下面来看看各代iOS设备的规格参数

设备 最大纹理尺寸 像素分辨率 坐标系
iPhone 2G\3G\3GS、iPod Touch
1024x1024
480x320 480x320
iPhone4、iPhone4s 2048x2048
960x640 480x320
iPad、iPad2 2048x2048 1024x768 1024x768
虽然这些设备的像素分辨率不同,但幸运 的是,cocos2d的坐标系统跟UIKit一样与像素无关,它使用的是点坐标系,而不是像素坐标系,即以点为单位,不是以像素为单位。在Retina显示屏幕的设备上,1点是2像素;在非Retina显示屏幕的设备上,1点就是1像素 。因此通过点来表示位置,坐标在两种设备上是相同的。

如果游戏运行在具有Retina显示屏幕的设备上,cocos2d会先尝试加载带有-hd后缀的图片。比如你在具有Retina显示屏幕的设备上加载ball.png,它会首先尝试加载ball-hd.png,如果该文件不存在或者非Retina显示屏幕,将加载标准分辨率(SD)图片ball.png。因此为了更好地支持Retina显示屏,一般会使用HD分辨率创建所有图片,然后把宽高都缩小50%,另存为SD分辨率图片

不过,要想cocos2d会自动加载HD图片,还需要开启对Retina显示屏幕的支持

copy
    [[CCDirectorsharedDirector]enableRetinaDisplay:YES];

CCLabelTTF

CCLabelTTF继承自CCSprite,可以用来显示文本

copy
    CCLabelTTF*label=[CCLabelTTFlabelWithString:@"HelloWorld"fontName:@"CourierNew"fontSize:20];
  1. label.position=ccp(winSize.width* [selfaddChild:label];

可以通过color属性设置文字颜色

copy
    label.color=ccc3(0);



原文地址:http://blog.csdn.net/q199109106q/article/details/8603163
感谢作者~!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


    本文实践自 RayWenderlich、Ali Hafizji 的文章《How To Create Dynamic Textures with CCRenderTexture in Cocos2D 2.X》,文中使用Cocos2D,我在这里使用Cocos2D-x 2.1.4进行学习和移植。在这篇文章,将会学习到如何创建实时纹理、如何用Gimp创建无缝拼接纹
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@163.com微信公众号:HopToad 欢迎转载,转载标注出处:http://blog.csdn.netotbaron/article/details/424343991.  软件准备 下载地址:http://cn.cocos2d-x.org/download 2.  简介2.1         引用C
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从Cocos2D-x官网上下载,进入网页http://www.cocos2d-x.org/download,点击Cocos2d-x以下的Download  v3.0,保存到自定义的文件夹2:从python官网上下载。进入网页https://www.python.org/downloads/,我当前下载的是3.4.0(当前最新
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发引擎,易学易用,支持多种智能移动平台。官网地址:http://cocos2d-x.org/当前版本:2.0    有很多的学习资料,在这里我只做为自己的笔记记录下来,错误之处还请指出。在VisualStudio2008平台的编译:1.下载当前稳
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《最强大脑》娱乐节目。将2048改造成一款挑战玩家对数字记忆的小游戏。邮箱:appdevzw@163.com微信公众号:HopToadAPK下载地址:http://download.csdn.net/detailotbaron/8446223源码下载地址:http://download.csdn.net/
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试以QtCreatorIDE来进行CMake构建。Cocos2d-x3.X地址:https://github.com/cocos2d/cocos2d-x1.打开QtCreator,菜单栏→"打开文件或项目...",打开cocos2d-x目录下的CMakeLists.txt文件;2.弹出CMake向导,如下图所示:设置
 下载地址:链接:https://pan.baidu.com/s/1IkQsMU6NoERAAQLcCUMcXQ提取码:p1pb下载完成后,解压进入build目录使用vs2013打开工程设置平台工具集,打开设置界面设置: 点击开始编译等待编译结束编译成功在build文件下会出现一个新文件夹Debug.win32,里面就是编译
分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net前言上次用象棋演示了cocos2dx的基本用法,但是对cocos2dx并没有作深入的讨论,这次以超级马里奥的源代码为线索,我们一起来学习超级马里奥的实
1. 圆形音量button事实上作者的本意应该是叫做“电位计button”。可是我觉得它和我们的圆形音量button非常像,所以就这么叫它吧~先看效果:好了,不多解释,本篇到此为止。(旁白: 噗。就这样结束了?)啊才怪~我们来看看代码:[cpp] viewplaincopyprint?CCContro
原文链接:http://www.cnblogs.com/physwf/archive/2013/04/26/3043912.html为了进一步深入学习贯彻Cocos2d,我们将自己写一个场景类,但我们不会走的太远,凡是都要循序渐进,哪怕只前进一点点,那也至少是前进了,总比贪多嚼不烂一头雾水的好。在上一节中我们建
2019独角兽企业重金招聘Python工程师标准>>>cocos2d2.0之后加入了一种九宫格的实现,主要作用是用来拉伸图片,这样的好处在于保留图片四个角不变形的同时,对图片中间部分进行拉伸,来满足一些控件的自适应(PS: 比如包括按钮,对话框,最直观的形象就是ios里的短信气泡了),这就要求图
原文链接:http://www.cnblogs.com/linji/p/3599478.html1.环境和工具准备Win7VS2010/2012,至于2008v2版本之后似乎就不支持了。 2.安装pythonv.2.0版本之前是用vs模板创建工程的,到vs2.2之后就改用python创建了。到python官网下载版本2.7.5的,然后
环境:ubuntu14.04adt-bundle-linux-x86_64android-ndk-r9d-linux-x86_64cocos2d-x-3.0正式版apache-ant1.9.3python2.7(ubuntu自带)加入环境变量exportANDROID_SDK_ROOT=/home/yangming/adt-bundle-linux/sdkexportPATH=${PATH}:/$ANDROID_SDK_ROOTools/export
1开发背景游戏程序设计涉及了学科中的各个方面,鉴于目的在于学习与进步,本游戏《FlappyBird》采用了两个不同的开发方式来开发本款游戏,一类直接采用win32底层API来实现,另一类采用当前火热的cocos2d-x游戏引擎来开发本游戏。2需求分析2.1数据分析本项目要开发的是一款游
原文链接:http://www.cnblogs.com/linji/p/3599912.html//纯色色块控件(锚点默认左下角)CCLayerColor*ccc=CCLayerColor::create(ccc4(255,0,0,128),200,100);//渐变色块控件CCLayerGradient*ccc=CCLayerGradient::create(ccc4(255,0,0,
原文链接:http://www.cnblogs.com/linji/p/3599488.html//载入一张图片CCSprite*leftDoor=CCSprite::create("loading/door.png");leftDoor->setAnchorPoint(ccp(1,0.5));//设置锚点为右边中心点leftDoor->setPosition(ccp(240,160));/
为了答谢广大学员对智捷课堂以及关老师的支持,现购买51CTO学院关老师的Cocos2d-x课程之一可以送智捷课堂编写图书一本(专题可以送3本)。一、Cocos2d-x课程列表:1、Cocos2d-x入门与提高视频教程__Part22、Cocos2d-x数据持久化与网络通信__Part33、Cocos2d-x架构设计与性能优化内存优
Spawn让多个action同时执行。Spawn有多种不同的create方法,最终都调用了createWithTwoActions(FiniteTimeAction*action1,FiniteTimeAction*action2)方法。createWithTwoActions调用initWithTwoActions方法:对两个action变量初始化:_one=action1;_two=action2;如果两个a
需要环境:php,luajit.昨天在cygwin上安装php和luajit环境,这真特么是一个坑。建议不要用虚拟环境安装打包环境,否则可能会出现各种莫名问题。折腾了一下午,最终将环境转向linux。其中,luajit的安装脚本已经在quick-cocos2d-x-develop/bin/中,直接luajit_install.sh即可。我的lin
v3.0相对v2.2来说,最引人注意的。应该是对触摸层级的优化。和lambda回调函数的引入(嗯嗯,不枉我改了那么多类名。话说,每次cocos2dx大更新。总要改掉一堆类名函数名)。这些特性应该有不少人研究了,所以今天说点跟图片有关的东西。v3.0在载入图片方面也有了非常大改变,仅仅只是