游戏中通常需要将常用的资源如:声音,图片,plist文件,提前加载进内存,以加快游戏的流畅度

1.预加载声音:

SimpleAudioEngine::getInstance()->preloadBackgroundMusic("boom.mp3");

加载之后就可以直接播放:SimpleAudioEngine::getInstance()->playBackgroundMusic("boom.mp3");

2.预加载图片资源:

图片资源的加载分为同步加载和异步加载两种方式,通常我们采用异步加载的方式:

TextureCache::getInstance()->addImageAsync("boss.png", CC_CALLBACK_1(LoadingScene::ResourceCallBack,this));//ResourceCallBack是加载后调用的函数,可做统计用

加载到内存之后,我们就可以直接从内存读取,而不需要IO操作了:

从内存中读取已经加载的图片资源,有两种方法:

auto bg = Sprite::createWithTexture(TextureCache::getInstance()->getTextureForKey("groundLevel.jpg"));//前提是前面异步加载的图片资源必须加载完成了,成功了,因为异步加载只是执行了加载动作,是否加载成功,不得而知.

第二种方法:

auto bg = Sprite::createWithTexture(TextureCache::getInstance()->addImage("groundLevel.jpg"));//使用addImage()方法,最保险,如果该图片没有预先加载,则通过IO操作从磁盘中加载进内存,并返回一个Texture2D* 对象,如果前面已经加载过,在内存中存在了,则直接读取内存.

两种方法的比较:

追求速度:第一种方法读取,前提是一定要保证要读取的资源图片已经加载进内存

追求保险:第二种方法,无论是否加载过,都会获得正确的结果,但是要保证资源图片是存在的.

3.加载其他资源文件,如plist,通常是一些3D模型的文件,或者粒子特效的资源文件

FileUtils::getInstance()->getDataFromFile("debris.plist");//预加载3D模型的文件

FileUtils::getInstance()->getDataFromFile("vanishingPoint.plist");//预加载漫天繁星的粒子特效的plist文件

SpriteFrameCache::getInstance()->addSpriteFramesWithFile("menu_scene.plist");//预加载打包的图片plist文件

(从已经加载的内存帧缓存中读取图片的方法:auto sprite=Sprite::createWithSpriteFrameName("mainmenu_BG.png");//前提是mainmenu_BG.png是已经通过plist或其他方法加载到了FrameCache中)

cocos2dx中加载图片资源的方法,和从内存中获取已经加载的图片资源的方法的更多相关文章

  1. java中方法调用在内存中的体现

    在java中,方法以及局部变量(即在方法中声明的变量)是放在栈内存上的.当你调用一个方法时,该方法会放在调用栈的栈顶.栈顶的方法是目前正在执行的方法,直到执行完毕才会从栈顶释放.我们知道,栈是一种执行 ...

  2. 一个 -100.01 的double 在内存中怎么存储的. 一个中文String 在内存中占多少直接 utf-8 / GBK

    一.-100.01 的double 在内存中怎么存储的 double双精度数据类型存储格式IEEE 双精度格式为8字节64位,由三个字段组成:52 位小数 f : 11 位偏置指数 e :以及 1 位 ...

  3. C语言中字符型,整数型,浮点型在内存中如何存储

    ···void main() { unsigned char a = 97; printf("%p",&a); printf("%c,%d\n", a, ...

  4. EF如何操作内存中的数据以及加载相关联表的数据:延迟加载、贪婪加载、显示加载

    之前的EF Code First系列讲了那么多如何配置实体和数据库表的关系,显然配置只是辅助,使用EF操作数据库才是每天开发中都需要用的,这个系列讲讲如何使用EF操作数据库.老版本的EF主要是通过Ob ...

  5. EF如何操作内存中的数据和加载外键数据:延迟加载、贪婪加载、显示加载

    EF如何操作内存中的数据和加载外键数据:延迟加载.贪婪加载.显示加载 之前的EF Code First系列讲了那么多如何配置实体和数据库表的关系,显然配置只是辅助,使用EF操作数据库才是每天开发中都需 ...

  6. (BUG已修改,最优化)安卓ListView异步加载网络图片与缓存软引用图片,线程池,只加载当前屏之说明

    原文:http://blog.csdn.net/java_jh/article/details/20068915 迟点出更新的.这个还有BUG.因为软引应不给力了.2.3之后 前几天的原文有一个线程管 ...

  7. JVM存储位置分配——java中局部变量、实例变量和静态变量在方法区、栈内存、堆内存中的分配

    Java中的变量根据不同的标准可以分为两类,以其引用的数据类型的不同来划分可分为“原始数据类型变量和引用数据类型变量”,以其作用范围的不同来区分可分为“局部变量,实例变量和静态变量”. 根据“Java ...

  8. 内存中 OLTP - 常见的工作负荷模式和迁移注意事项(三)

    ----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<In-Memory OLTP – Comm ...

  9. 内存中 OLTP - 常见的工作负荷模式和迁移注意事项(二)

    ----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<In-Memory OLTP – Comm ...

随机推荐

  1. 如何调试异步加载的js文件(浏览器调试动态加载js)

    描述 1:jQuery->var obj= new $.js_Obj():等异步加载js文件,执行方法. obj.method(): 2:页面估计不变,通过声明不同的js文件,进行页面内容的转换 ...

  2. 学习Slim Framework for PHP v3 (六)--route怎么被匹配的?

    先标记觉得以后会用到的内容: // add route to the request's attributes in case a middleware or handler needs access ...

  3. The future of programming languages

    In this video from JAOO Aarhus 2008 Anders Hejlsberg takes a look at the future of programming langu ...

  4. Part 92 Significance of Thread Join and Thread IsAlive functions

    Thread.Join & Thread.IsAlive functions Join blocks the current thread and makes it wait until th ...

  5. JSP之错误信息提示

    MessageResource.properties配置文件: RegisterAction注册: package com.caiduping.action; import javax.servlet ...

  6. JQuery的复选框选中、取消、全选,全不选问题

    一.必须引入JQuery库: 下面是js代码: /*** * 服务管理块>>>复选框事件处理 */ //服务管理复选框被选中.取消$(function(){ $("#Ser ...

  7. Windows下安装GnuRadio最简单的方法(没有之一)

    作者在Windows XP SP3 32位下亲测通过,理论上Win7也没问题. 1. 如果系统中安装有Python,请先把Python卸载. 2. 下载安装Python(x,y) 2.7.5.0, 下 ...

  8. 安装Java EE失败,解决方案

    笔者安装Java EE(版本是java_ee_sdk-7-jdk7-windows-x64-ml.exe)时,遇到错误提示提示"Could not find the required ver ...

  9. .Net平台Winform两个ComboBox控件绑定同一个数据源

    今天WINFROM编程遇到这么一个问题:是有关WINFORM中两个comboBox控件绑定同一个数据源的问题,在窗体的界面上有两个comboBox,我在Form1_Load中对他们做了数据绑定(具体代 ...

  10. CENTOS6.2系统日志rsyslog替换默认的日志服务syslog 转载自http://www.phpboy.net/linux/648.html

    最近遇到配置centos 6.2的sshd及sftp日志,发现/etc/syslog.conf文件不存在, 然后: #rpm -qa | grep syslog 出来的是 rsyslog-5.8.10 ...