• 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中)

  • 相关阅读:
    Python——协程
    Linux——raid介绍
    Linux——网关介绍
    Linux——inode节点介绍
    算法:排序加二分查找
    Mysql主从复制作用和工作原理详解
    Selenium中错误:selenium.common.exceptions.ElementClickInterceptedException: Message: element click inte
    redis.exceptions.DataError: Invalid input of type: 'dict'. Convert to a byte, string or number first
    Python之requests错误Expecting value: line 1 column 1 (char 0)
    简述cookies和session的区别
  • 原文地址:https://www.cnblogs.com/ttss/p/4136362.html
Copyright © 2020-2023  润新知