zoukankan      html  css  js  c++  java
  • cocos2dx中加载图片资源的方法,和从内存中获取已经加载的图片资源的方法

    游戏中通常需要将常用的资源如:声音,图片,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中)

  • 相关阅读:
    php注册、登录界面的制作
    php将表单中数据传入到数据库
    数据操作
    Hibernate入门(五)---------事务管理
    MySQL事务(学习笔记)
    Hibernate入门(四)---------一级缓存
    Hibernate入门(三)
    反射demo(拷贝一个对象)
    反射学习小结
    Hibernate入门(二)——hibernateAPI详解
  • 原文地址:https://www.cnblogs.com/ttss/p/4136362.html
Copyright © 2011-2022 走看看