`
yangping_Account
  • 浏览: 191742 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

Cocos2D-iPhone精灵的基础知识点总汇

 
阅读更多

 

最近写了不少Cocos2d的博文了,那么由于Himi介绍的一般都是比较容易出错的问题或者比较受到关注的知识点,所以不少童鞋要求写个基础篇,那么这里Himi就举例最常用的精灵CCSprite来详细的介绍一些吧; 考虑到网上对于Cocos2d-iphone的中文教程已有很多,所以这里Himi会拿出一些教程没有提到的基础知识点来分享;

     首先我们来创建一个精灵: 

CCSprite* sprite =[CCSprite spriteWithFile:@"Icon.png"];//初始化  

[self addChild:sprite]; //添加入层中  


    代码很简单,传入一张贴图名即可,然后添加层中,那么这里Himi说几点:

 

 1. 精灵除了这个创建函数外,还有很多方法,最重要的另一个就是利用打包工具打包出来的帧缓存中加载贴图并创建;关于打包工具Himi使用的是TP,还有其他一些这里不介绍了,Himi之前的博文也有对应的介绍;

 2.精灵默认添加进layer中默认是layer的(0,0)点,即屏幕的左下角;而且精灵的贴图绘制是以精灵的贴图中心点进行渲染的,简单说如果精灵贴图大小看成单位一,精灵的锚点(anchor)是(0.5,0.5);这个是精灵默认锚点,当然也可以设置锚点,这个锚点的范围是[0,1];

3.大家如果刚接触一门新语言、引擎、框架等就要慢慢找到它们的规律,比如在cocos2d中一般创建都是类似的创建方式,而初始化的函数基本都是以类名后的一个单词作为开头;比如咱们这个CCSprite类,它的构造函数就是sprite开头的;

    OK,知道如何创建一个精灵了,下面我们来写一点精灵的常用方法和基本位图操作吧:


CCSprite* sprite =[CCSprite spriteWithFile:@"Icon.png"];//初始化  

[self addChild:sprite]; //添加入层中  

sprite.scale=2;//放大2倍  

sprite.rotation=90;//旋转90度  

sprite.opacity=255;//设置透明度为完全不透明(范围0~255)  

sprite.position=ccp(100,100);//设置精灵中心点坐标是x=100,y=100  

[sprite setFlipX:YES];//X轴镜像反转  

[sprite setFlipY:YES];//Y轴镜像反转  

[sprite setColor:ccc3(255, 0, 0)];//设置颜色为红色  


   关于精灵的动作这些N多文章都写过了,这里我就不写了,没意义,我这里给大家再讲解下童鞋们经常纠结的两个问题:

 

1.如何重新设置精灵的z轴(覆盖层)?

       对于这个问题,很多童鞋无法找到方法的原因主要是因为大家首先想到的是更改精灵的Z轴值的大小(Z轴值越大离屏幕越近),那么就会错误的使用下面这段代码:

sprite.zOrder=2;  


这句话是不允许使用的错误代码,因为精灵的zOrder属性只能可读不可修改;那么Himi提供大家一个解决方法,那就是利用布局去重新设置你想设置的精灵的z轴值,例如以下代码:(111.png是我从博客随便截出来的图,反正比Icon.png大就可以,这样童鞋们就能看得清楚了)

 

//--z值1的精灵  

CCSprite* sprite =[CCSprite spriteWithFile:@"Icon.png"];  

[self addChild:sprite z:1]; //添加入层中  

sprite.position=ccp(300,200);//设置精灵中心点坐标是x=100,y=100  

//--z值2的精灵  

CCSprite* sprite2 =[CCSprite spriteWithFile:@"111.png"];  

[self addChild:sprite2 z:2];   

sprite2.position=ccp(220,120);  

v

 

 

从代码中可以很清晰看到第二个精灵sprite2的z轴大于第一个精灵sprite的z轴值,那么sprite2肯定是覆盖sprite上的,运行效果图如下:


下面我们来利用layer对第一个精灵进行z轴重新设定,代码如下:

[self reorderChild:sprite z:10];  


self:  CCLayer

 

sprite:  想要重新设置z轴(覆盖层)的精灵

z: 想要重新设置z轴(覆盖层)的精灵的z轴值

  OK,那么我们重新设置了第一个精灵的z轴值为10,这时候精灵1比精灵2的z轴大了,1会覆盖2精灵,运行效果如下图:

 

 

2.如何更换已创建的精灵贴图?

    在上面我介绍了精灵的创建一般有两种:一种是利用帧缓存,另一种是直接索引贴图ID进行创建;所以呢更换精灵贴图也一般分为两种方法;

首先介绍第一种直接利用新建贴图进行更换:

 实例代码如下:

//-----没有换贴图前  

CCSprite*sprite =[CCSprite spriteWithFile:@"Icon.png"];  

sprite.position=ccp(150,150);  

[self addChild:sprite];  

//-----换贴图后  

CCSprite*sprite2 =[CCSprite spriteWithFile:@"Icon.png"];  

sprite2.position=ccp(350,150);  

[self addChild:sprite2];  

//更换贴图  

CCTexture2D * texture =[[CCTextureCache sharedTextureCache] addImage: @"Default.png"];//新建贴图  

[sprite2 setTexture:texture];   


运行效果如下:


    第二种利用帧替换:

//加载帧缓存,这个testpngs.plist保存了Icon和111两张图,-hd表示高清版本iphone4  

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"testpngs-hd.plist"];  

//-----没有换贴图前   

CCSprite*sprite =[CCSprite spriteWithSpriteFrameName:@"Icon.png"];  

sprite.position=ccp(150,150);  

[self addChild:sprite];  

//-----换贴图后  

CCSprite*sprite2 =[CCSprite spriteWithSpriteFrameName:@"Icon.png"];  

sprite2.position=ccp(350,150);  

[self addChild:sprite2];  

//更换帧贴图  

//从帧缓存中取出111.png  

CCSpriteFrame* frame2 = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"111.png"];  

[sprite2 setDisplayFrame:frame2];  


 

运行效果如下:



-------------下面来介绍如何来利用CCSprite精灵或者CCLayerColor简单实现一个简单的覆盖层(遮挡)效果

      首先利用CCSprite来实现,代码如下:


CCSprite *sprLeft = [CCSprite spriteWithFile:@"Icon.png"];  

sprLeft.position=ccp(100,180);  

[self addChild:sprLeft];  

//----创建一个简单的覆盖层  

//获取当前屏幕宽高  

CGSize size =[[CCDirector sharedDirector]winSize];  

//创建一个精灵(无贴图)  

CCSprite*sprite =[CCSprite node];  

//设置精灵贴图大小(全屏幕宽高)  

sprite.textureRect=CGRectMake(0, 0, size.width, size.height);  

sprite.position=ccp(size.width*0.5,size.height*0.5);  

sprite.opacity=127;//半透明[0~255]  

sprite.color=ccc3(0, 0, 0);//设置黑色  

[self addChild:sprite];  

//----  

CCSprite* sprRight = [CCSprite spriteWithFile:@"Icon.png"];  

sprRight.position=ccp(300,180);  

[self addChild:sprRight];  


      这里我创建了两个精灵一个被覆盖 一个不被覆盖 这样只要让童鞋们看得更清楚~

 

     下面利用第二种方式实现:

 

//----  

CCSprite *sprLeft = [CCSprite spriteWithFile:@"Icon.png"];  

sprLeft.position=ccp(100,180);  

[self addChild:sprLeft];  

//----创建一个简单的覆盖层  

//创建一个精灵(无贴图)  

CCLayerColor *layer =[CCLayerColor layerWithColor:ccc4(0, 0, 0, 127)];  

[self addChild:layer];  

//----  

CCSprite* sprRight = [CCSprite spriteWithFile:@"Icon.png"];  

sprRight.position=ccp(300,180);  

[self addChild:sprRight];  


 

      第二种方法大家可以看到就两句话实现,原因这里解释下:

                第一种设置了贴图大小,layer不需要!因为layer默认全屏;

                第一种设置了坐标,layer不需要!因为layer默认屏幕中心点;

                第一种设置了透明度和颜色,layer也设置了~在layer创建的时候创建的,在layer创建时传入的四个参数:

                四个参数分别表示RGBA!注意是RGBA!!!!不是ARGB!(因为Himi做过me、Android所以看到设置颜色第一概念就是ARGB。。所以刚接触这里各种郁闷,总是效果不是如自己想的。。。)

               这里补充下:RGBA 颜色的三原色,红色、绿色、蓝色、透明度!

 两种实现方式效果都如下图所示:

 

       希望童鞋们在初学的时候尽可能的遇到问题按照如下顺序去做:首先自己多次尝试->去看源码->百度google->最后请教他人


      OK,就写到这里!下篇见~继续忙了;      

分享到:
评论

相关推荐

    cocos2d-iphone-2.0.tar.gz

    Cocos2d-iPhone是一个广泛使用的2D游戏开发框架,专为iOS设备(如iPhone和iPad)设计。这个开源项目让开发者能够轻松地创建高质量的游戏、应用和交互式内容,而无需深入理解底层图形和物理编程。"cocos2d-iphone-2.0...

    cocos2d-iphone~cocos2d-html5移植之旅

    本文将深度剖析此书中的核心知识点,包括cocos2d-html5引擎的简介、移植的动机、为何选择cocos2d-html5以及整个系列文章的声明与目标读者。 #### cocos2d-html5:跨平台的2D游戏开发引擎 cocos2d-html5作为cocos2d...

    【iOS-Cocos2d游戏开发】Cocos2d-iPhone动作Action-扩展动作

    在iOS游戏开发中,Cocos2d-x是一个广泛使用的2D游戏引擎,其Cocos2d-iPhone版本专为Objective-C编程语言设计。本主题主要关注Cocos2d-iPhone中的“动作”(Actions)机制,这是一个强大的工具,用于创建各种动画效果...

    Cocos2d-x实战:JS卷——Cocos2d-JS开发

    资源名称:Cocos2d-x实战:JS卷——Cocos2d-JS开发内容简介:本书是介绍Cocos2d-x游戏编程和开发技术书籍,介绍了使用Cocos2d-JS中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台...

    子龙山人兄弟翻译cocos2d-iphone教程.rar

    《子龙山人兄弟翻译cocos2d-iphone教程》是一个专为初学者设计的游戏开发教程,由知名开发者子龙山人及其团队...通过这个教程,你将掌握使用cocos2d-iphone开发游戏的核心技术,为自己的游戏创作之路打下坚实的基础。

    Cocos2d-JS游戏开发

    本篇将深入探讨Cocos2d-JS的游戏开发知识,从基础到进阶,帮助你掌握这一利器。 首先,了解Cocos2d-JS的基础概念至关重要。Cocos2d-JS由Cocos2d-x移植而来,采用JavaScript语言,支持HTML5和原生应用开发。它的核心...

    cocos2d-iphone 2.1 第一部分

    继续输入cd Cocos2d-iPhone-0.99.5(cd Cocos2d-iPhone-0.99.5为解压的cocos2d文件夹名称)进入cocos2d文件夹中。 4。继续输入./install-templates.sh则打开你文件夹下面的install-templates.sh进行cocos2d的安装。...

    iOS游戏应用源代码——cocos2d-cocos2d-iphone-extensions.zip

    "cocos2d-cocos2d-iphone-extensions.zip"这个压缩包包含了cocos2d-iphone的一个特定版本(e42002b)的源代码及其扩展,对于想要深入了解cocos2d-iphone的工作原理、优化游戏性能或者自定义功能的开发者来说,这是一...

    Cocos2d-x 3.x游戏开发实战pdf含目录

    本书首先会介绍Cocos2d-x 3.x的基础知识,包括安装环境、项目创建、构建流程以及基本的场景管理。读者将学习如何在不同平台上配置Cocos2d-x开发环境,了解项目的目录结构和构建过程,掌握Scene、Layer、Node等核心...

    Cocos2d-iphone 开发教程

    ### Cocos2d-iPhone开发教程相关知识点 #### 一、Cocos2d-iPhone简介与版权要求 **Cocos2d-iPhone**是一款专为iOS设备设计的2D游戏开发框架,它基于OpenGL ES图形渲染,并且拥有丰富的功能集,能够支持多种游戏...

    Cocos2d-x实战 JS卷 Cocos2d-JS开发

    JS卷特别针对JavaScript开发者,详细介绍了如何利用Cocos2d-JS进行游戏开发,涵盖了从基础概念到高级技术的全面知识。 本书的内容可能包括以下几个方面: 1. **Cocos2d-x入门**:介绍Cocos2d-x的基本架构,包括...

    Cocos2d-x实战C++卷关东升著完整版pdf

    首先,Cocos2d-x的基础知识是必须掌握的。Cocos2d-x基于C++,但也支持Lua和JavaScript,但本书主要关注C++的使用。C++作为一门强大的系统级编程语言,提供了面向对象的特性,使得游戏开发中的对象管理和性能优化更为...

    cocos2d-x windows vs2010配置

    双击上图中的 cocos2d-win32.vc2010.sln(如果你使用的是 vs2008,那么只双击cocos2d-win32.vc2008.sln),然后右键点解决方案,再点生成解决方案。这个过程大约有 10 分钟,因个人电脑速度而异。 三、运行 Cocos2d...

    Cocos2d-x实战:C++卷(2版)源代码

    《Cocos2d-x实战:C++卷(2版)源代码》这本书是关于使用Cocos2d-x游戏引擎进行游戏开发的专业指南。Cocos2d-x是一个开源的、跨平台的游戏开发框架,广泛应用于iOS、Android、Windows等多个操作系统。本书以C++语言...

    cocos2d-x-3.1.zip

    Cocos2d-x 3.1版主要知识点包括: 1. **跨平台支持**:Cocos2d-x 3.1支持多种操作系统和设备,包括iOS、Android、Windows、Mac、Linux等,使得开发者可以编写一次代码,到处运行。 2. **C++基础**:Cocos2d-x主要...

    cocos2d-x-cocos2d-x-2.2.2.zip

    cocos2d-x不仅适用于游戏开发,还可以用于创建教育软件、互动媒体和其他2D图形应用,其强大的场景管理、精灵(Sprite)系统和粒子效果等功能,使得开发者能够快速构建各种复杂的2D场景。 总的来说,cocos2d-x 2.2.2...

    Cocos2d-x实战++JS卷++Cocos2d-JS开发+PDF电子书下载+带书签目录+完整

    标题中提到了"Cocos2d-x实战++JS卷++Cocos2d-JS开发+PDF电子书下载+带书签目录+完整",这里面包含了几个关键知识点: 1. Cocos2d-x:是一个开源的游戏开发框架,它主要用于开发跨平台的游戏和应用程序,支持iOS、...

    cocos2d-x_v3.16安装及环境变量配置文档

    cocos2d-x 是一个开源的游戏开发框架,使用 C++ 语言编写,支持多平台发布,包括 iOS、Android、Windows、macOS...对于想要进行跨平台游戏开发的开发者来说,熟悉 Cocos2d-x 以及其依赖环境的安装和配置是必要的基础。

    经典版本 方便下载 源码 旧版本 3.8 官网找不到了 cocos2d-x-3.8.zip

    《cocos2d-x 3.8:经典游戏引擎源码解析》 cocos2d-x 是一个跨平台的游戏开发框架,它基于C++,同时提供了Lua和JavaScript的绑定,让开发者可以方便地在多种操作系统上创建2D游戏、演示程序和其他图形交互应用。这...

    cocos2d-x-3.13.1 spine3.6.zip

    《Cocos2d-x 3.13.1与Spine 3.6集成详解》 Cocos2d-x是一个广泛使用的开源游戏开发框架,它基于C++,同时支持Lua和JavaScript等多种脚本语言,为开发者提供了高效、跨平台的游戏开发解决方案。在3.13.1版本中,...

Global site tag (gtag.js) - Google Analytics