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

讲解CCSpriteBatchNode与TP工具

 
阅读更多

 

  前几节由于时间紧张,只是将一些遇到的问题拿出来进行分享经验,那么今天抽空写一篇常用的精灵以及精灵常用和注意的一些知识;那么由于cocos2d教程基本很完善,那么今天Himi介绍一些注意点和细节点分享大家;

            首先对于使用过精灵的童鞋很熟悉CCSpriteBatchNode,至少大家都会知道它能优化精灵,但是至于优化原理这里简单说下:

            一般使用精灵CCSprite的时候,都是直接使用[CCLayer* addChild:CCSprite *];,假设我们创建一百个精灵,那么当前的CCLayer会为100个精灵单独绘制;

           如果使用精灵集合-CCSpriteBatchNode的话,直接将集合CCSpriteBatchNode添加CCLayer中即可,即使创建一百个精灵,我们也都是将100个精灵添加到集合中,[CCSpriteBatchNode* addChild:CCSprite];而已;

           两者的区别:

         1.  直接使用CCLayer进行添加精灵,CCLayer上有几个精灵,那么底层就会绘制几次精灵;

                      简单可以理解成底层绘制方式如下:

                      for(int i= 0;i<100;i++){open-draw-close;}

          但是使用集合的话,CCLayer只需要对精灵集合进行一次渲染,

                     简单可以理解成底层绘制方式如下:

                    open-draw(100次绘制)-close

         从以上两种方式可以看出两者的区别了,第二种使用精灵集合省去了99次open和close的过程,从而达到优化作用;

          上次参加iOS第四次开发者大会,cocos2d-x的张哲在演讲中重点拿出了这一点进行讲解,他在ipad上使用两种方式给出的数据如下:

                  在屏幕中绘制3000个精灵,直接使用CCLayer添加精灵的方式,帧数从60下降到不到20帧;

                  同样在屏幕中绘制3000个精灵,使用CCSpriteBatchNode的渲染方式,帧数保持在50帧左右;

          当然Himi也亲自测试过,但是由于真机调试的还没申请下来,所以只能在模拟器上测试,发现同时绘制300个精灵,两种方式帧数一致,无区别;不是因为没差别,而是因为在iOS模拟器中,帧数与屏幕中的精灵数量有关,真机则会很明显的体现两者的区别;


       2.使用CCSpriteBathNode虽然能达到优化,但是要注意一点:

          初始化精灵集合CCSpriteBatchNode的时候会加载一张图片资源(或者pvr文件等),那么限制其精灵集合的子精灵都必须使用集合加载的这张图才行,否则会给出警告;

       

       3.使用CCSpriteBatchNode还要注意一点,因为精灵都存放在集合中,那么这个集合CCSpriteBatchNode中的节点(精灵)都将在同一个z轴上,同一深度上;


       在上一章中介绍过TexturePacker工具的作用,那么这里不介绍如何使用,而是说下主要的两点,一般使用TexturePacker工具都会将很多精灵图片或者动作帧放在一起打包成“.pvr.ccz”、".plist"、“-hd.pvr.ccz”和"-hd.plist"的四个文件,其中两个-hd的是使用工具生成的打包资源的高清版本(940*480)使用的,这个不再强调了;

      至于".pvr.ccz"格式的则是最压缩、最适合iOS的资源文件格式了,那么与".plist"两个文件的使用方式其实也很简单,代码如下:

 


[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"XX.plist"];  

    以上代码是将".pvr.ccz"资源包的图进行加载到精灵帧缓存中,一旦加载过后,你就可以任意使用了,比如你将icon.png和himi.png两张图片一起利用工具打包成“.pvr.ccz”、".plist"两个文件后,将两个文件放在项目下(两张图片不需要了),然后使用刚才的代码将资源包加载缓存中,只需要加载plist文件即可,pvr.ccz的不需要加载,但是也需要放在项目下,然后你在创建精灵的时候可以使用以下形式进行创建精灵:

 


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


      通过上面这行代码可以看出,此种创建精灵的方式是利用帧缓存创建的,那么也就是说一旦加载的许多个一样的精灵的时候利用此方式相当优化运行内存,最容易想到的就是创建子弹;

 

       那么肯定会有童鞋说,那么如果把这资源文件与CCSpriteBathNode结合使用岂不是更嗨皮,没错,可以的,加载的时候只需要将如下创建集合即可:


CCSpriteBatchNode spritesBgNode = [CCSpriteBatchNode batchNodeWithFile:@"xx.pvr.ccz"];  

[CCLayer* addChild:spritesBgNode];      

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"xx.plist"];  


     最后顺便跟大家强调需要重点注意的三点:

 

     1.使用TexturePacker工具虽然可以对应生成@2x与-hd文件,但是工具会将你导入的所有精灵图的会做作为-hd的资源包生成,而对应的非高清的则是当前图片尺寸缩放一半的资源而已;

     2.如果你项目中需要加载使用一张"himi.png"的图的话,那么在cocos2d引擎开发的项目中,首先会去资源中寻找"himi-hd.png"的图片,如果找不到则会去寻找"himi@2x.png"的图,所以这里一定要注意资源的命名和使用;

    3.在cocos2d 1.0.0的版本中千万不要在使用pvr.ccz与plist文件的时候加上以下代码:


[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_Default];  


     4. 在使用TexturePacker工具选取打包成pvr.ccz格式的时候会提示让你加上这么一句代码:

 

 


[CCTexture2D PVRImagesHavePremultipliedAlpha:YES];  

   工具原文提示如下:

 

   

 

 

 

        [CCTexture2D PVRImagesHavePremultipliedAlpha:YES]; 如果在项目中添加了这句话,但是,忘记在TP工具中将倒数第二项打钩,那么你就悲剧了 ;

       打包成pvr格式的不要忘记在TP打包前将TP的倒数第二个选项打钩哦~;

         好了,这篇就到这里,继续忙了。。。。。。

分享到:
评论

相关推荐

    TP900通讯工具_TP900驱动_tp通讯工具_TP900_

    该工具能够帮助用户实现与TP900设备之间的稳定数据交换,适用于各种应用场景,如工业自动化、物联网设备控制、数据采集等。 在【TP900驱动】部分,我们首先要理解驱动程序的角色。驱动程序是计算机硬件与操作系统...

    TP900S工具和驱动文件2.0_TP900usb驱动_振中驱动_振中900驱动_振中900驱动_振中TP900s驱动及工具_源

    振中TP900S工具和驱动文件2.0是一个专为振中TP900S设备设计的软件包,包含了一系列重要的驱动程序和实用工具,使得用户能够顺利地进行程序烧录和设备的正常连接。这个软件包的发布旨在解决用户在与TP900S交互时可能...

    过TP保护工具

    **二、过TP工具的风险与危害** 1. **账号安全**:使用过TP工具可能导致游戏账号被封禁,因为大多数游戏公司都会严厉打击这种行为。 2. **系统安全**:这类工具可能含有恶意代码,如病毒、木马等,可能损害用户的...

    华为L2TP客户端工具

    华为L2TP客户端工具,不用改注册表了,有需要的下载吧!

    TP900S通讯工具(兼容TP900)_TP900S_TP900_

    【压缩包子文件的文件名称列表】"TP900S通讯工具(兼容TP900)"这个文件名表明压缩包内包含的资源与标题一致,很可能是该通讯工具的安装程序、驱动、API文档、用户手册等。用户可能需要解压此文件,然后按照指示安装...

    android设备tp性能测试工具

    android设备tp性能测试工具,能够测试tp的报点频率以及响应速度!

    TP通讯工具.rar_TP_TP测试_tp通讯工具

    综合以上分析,"TP通讯工具"不仅具备了与TP设备进行高效通信的基本功能,还提供了用户友好的界面定制、故障恢复和开发调试支持,是一个全面的解决方案,适用于TP设备的维护和开发工作。使用这套工具,无论是普通用户...

    FANUC机器人示教程序TP转文本工具

    标题 "FANUC机器人示教程序TP转文本工具" 提供了一个关键的线索,即它是一个专门用于处理FANUC机器人的示教程序(Teach Pendant, TP)的工具,能够将TP程序转换成文本格式。这样的工具对于FANUC机器人用户来说非常...

    振中TP900通讯工具.rar_TP900_tp900开发工具_振中_掌机程序_通讯工具

    对振中TP900掌机下载抄表程序,ps:07-645;3761规约;鼎信07

    TP-LINK安防运维配置工具(SFCT)_1.0.7.40

    TP-LINK安防运维配置工具(SFCT)是TP-LINK公司推出的一款专为安防设备管理设计的专业软件。这款工具主要用于简化和优化网络监控系统中的设备配置、管理和维护工作,适用于那些拥有大量TP-LINK安防设备的用户,如...

    TP900S工具和驱动文件2.0

    【TP900S工具和驱动文件2.0】是一个专为北京振中TP900s手抄器设计的软件包,包含了该设备所需的驱动程序和配套工具,旨在帮助用户更好地操作和管理这款手持设备。这个压缩包是升级到2.0版本,可能包含了性能优化、新...

    tp-ling升级工具

    文件名称"100324"可能是指具体的固件版本号或者与升级工具相关的文件,但没有更多信息,无法进一步详细解读。通常,固件版本号由日期或者内部版本迭代数字组成,表示软件的更新时间和特性。 总的来说,TP-Link...

    TP Link 路由器备份文件查看密码工具

    总的来说,TP Link路由器备份文件查看密码工具是网络管理工具箱中的一个重要组成部分,它使得查看和理解路由器配置变得更加容易。但使用时务必谨慎,遵循合法合规的原则,确保网络安全和个人隐私不受到侵犯。

    TP900S工具和驱动文件2.0.rar_TP900S工具_TP900S微机通讯_Tp900s驱动_Tp900驱动下载_振中TP

    TP900S工具和驱动文件2.0是一款专为振中TP900S系列设备设计的软件包,主要用于实现TP900S设备之间的数据传输和驱动安装。这个压缩包包含了用户需要的一切资源,确保TP900S设备能够正常运行并与其他设备进行高效通讯...

    tp5漏洞利用工具.zip

    标题中的“tp5漏洞利用工具.zip”指的是一个包含利用ThinkPHP5框架中安全漏洞的工具包,这个压缩包主要用于测试和展示ThinkPHP5代码执行漏洞的利用方式。描述提到,这个工具包含了两种方法,用于在目标系统上检测并...

    tplink 无线规划工具

    基于“tplink”标签,我们可以推测这个工具可能与TP-LINK的设备兼容性极佳,能够无缝集成到TP-LINK的网络解决方案中。它可能包含了对TP-LINK无线AP的特性理解,如射频特性、最大连接数、功耗等,从而提供更精确的...

    FANUC机器人程序转换工具(TP程序转TXT).rar

    标题 "FANUC机器人程序转换工具(TP程序转TXT).rar" 涉及到的主要知识点是关于FANUC机器人的编程与数据转换。FANUC是一家全球知名的工业机器人制造商,其产品广泛应用于自动化生产线,尤其在汽车制造、电子组装等领域...

    TpLink破解密码工具和方法.zip

    TpLink破解密码工具和方法,亲试可以完美破解。禁止用于商用!TpLink破解密码工具和方法,亲试可以完美破解。禁止用于商用!

    TP路由固件头修改工具

    TP路由固件头修改工具是一款专门针对TP-Link品牌路由器的固件文件进行修改的实用程序。在深入了解这个工具之前,我们首先需要了解路由器固件的基本概念和作用。固件是嵌入在硬件设备中的软件,它控制着设备的操作和...

    TP700驱动及其工具

    TP700驱动及其工具是针对TP700设备的一套关键软件组件,它使得用户能够有效地在计算机上与TP700设备进行交互和管理。TP700是一款可能属于触摸屏显示器或者智能终端的产品,广泛应用于工业控制、商业展示、自助服务等...

Global site tag (gtag.js) - Google Analytics