文档章节

【Cocos2d-x基础概念】CCFileUtils-fullPathFromName

王选易
 王选易
发布于 2013/05/23 00:24
字数 646
阅读 6.9K
收藏 3

#Cocos2d-x-API-详解-CCFileUtils-fullPathFromName

注: 文中的 psz 表示 "(p)ointer to (s)tring, (z)ero-terminated".

在这篇博客里我将介绍cocos2d-x中的CCFileUtils几个函数的具体用法

在CCSpriteFrameCache和很多其他需要载入资源的函数中,都调用了fullPathName这个函数,可以说这个函数是解决file not found问题的最重要入口,下面让我细细道来

####CCFileUtils::sharedFileUtils()->fullPathFromName(std::string pszFilename)

根据一个文件名返回一个绝对路径

第一步,它会在“filenamelookup”字典里找到一个新的文件名(通过key-value对查找),如果这个新的文件名无法找到,那么他就用原来的文件名

第二步,它会根据原来设定的搜索路径,将filename添加到相对路径上去

例如:

我们把("/mnt/sdcard/", "internal_dir/")这两个元素添加到搜索路径的数组中(通过setSearchPaths方法),然后设置("resources-ipadhd/", "resources-ipad/", "resources-iphonehd")添加到为不同分辨率设定的数组中(通过setSearchResolutionsOrder方法)。上面提到的internal_dir是相对于Resources/的(在安卓里是assests/),即如果第一个字符不是/,则最终该路径默认是一个相对路径。

如果我们有一个叫做 'sprite.png'的图片, 在“filenamelookup”字典中可以查询到: sprite.png -> value: sprite.pvr.gz. 首先, 它会把'sprite.png' 替换成 'sprite.pvr.gz', 然后按下面的方法搜索sprite.pvr.gz:

	/mnt/sdcard/resources-ipadhd/sprite.pvr.gz      (if not found, search next)
	/mnt/sdcard/resources-ipad/sprite.pvr.gz        (if not found, search next)
	/mnt/sdcard/resources-iphonehd/sprite.pvr.gz    (if not found, search next)
	/mnt/sdcard/sprite.pvr.gz                       (if not found, search next)
	internal_dir/resources-ipadhd/sprite.pvr.gz     (if not found, search next)
	internal_dir/resources-ipad/sprite.pvr.gz       (if not found, search next)
	internal_dir/resources-iphonehd/sprite.pvr.gz   (if not found, search next)
	internal_dir/sprite.pvr.gz                      (if not found, return "sprite.png")

如果文件名包含像"gamescene/uilayer/sprite.png"这样的路径,搜索过程将会是这样

	 /mnt/sdcard/gamescene/uilayer/resources-ipadhd/sprite.pvr.gz      (if not found, search next)
	 /mnt/sdcard/gamescene/uilayer/resources-ipad/sprite.pvr.gz        (if not found, search next)
	 /mnt/sdcard/gamescene/uilayer/resources-iphonehd/sprite.pvr.gz    (if not found, search next)
	 /mnt/sdcard/gamescene/uilayer/sprite.pvr.gz                       (if not found, search next)
	 internal_dir/gamescene/uilayer/resources-ipadhd/sprite.pvr.gz     (if not found, search next)
	 internal_dir/gamescene/uilayer/resources-ipad/sprite.pvr.gz       (if not found, search next)
	 internal_dir/gamescene/uilayer/resources-iphonehd/sprite.pvr.gz   (if not found, search next)
	 internal_dir/gamescene/uilayer/sprite.pvr.gz                      (if not found, return "gamescene/uilayer/sprite.png")

####CCFileUtils::sharedFileUtils()->getSearchPaths()

返回一个std::vectorstd::string,包含所有搜索路径

####CCFileUtils::sharedFileUtils()->setSearchPaths(std::string psz)

在游戏初始化配置中应当指定搜索路径(包括脚本的位置,图片的位置,音频的位置等等)

###以下两个函数是为了适配不同分辨率的屏幕而产生的,也是很有用的

####CCFileUtils::sharedFileUtils()->getSearchResolutionOrder()

####CCFileUtils::sharedFileUtils()->setSearchResolutionOrder()

© 著作权归作者所有

王选易

王选易

粉丝 99
博文 20
码字总数 20066
作品 3
南京
程序员
私信 提问
加载中

评论(1)

不吃肉夹馍
不吃肉夹馍
不错
quick-cocos2d-x图片资源加密

quick-x已经支持用XXTEA加密方式对脚本文件进行加密。在此基础上,自己做了一些工作,对图片资源进行了XXTEA加密,现分享给大家。 (2014.5.30加注:quick-x的2.2.3版本已经集成了我递交的pr,...

SunLightJuly
2013/12/12
1.2W
28
quick-cocos2d-x图片资源加密(续)

前篇: quick-cocos2d-x图片资源加密 让quick-cocos2d-x支持加密的plist文件 通过前篇的修改,我们已经能够在Windows平台的player,以及Android上使用加密的常见格式(png、jpg等)的图片资源了...

SunLightJuly
2014/01/03
5K
4
quick-cocos2d-x使用protobuf

1、下载pbc项目 https://github.com/miaodadao/pbc 2、proto生成pb文件 https://code.google.com/p/protobuf/downloads/list 下载protoc文件,然后切换到上面下载完成后解压的文件下调用下面...

千山万水
2014/05/05
1.9K
0
quick-cocos2d-x protobuf

1、下载pbc项目 https://github.com/miaodadao/pbc 2、proto生成pb文件 https://code.google.com/p/protobuf/downloads/list 下载protoc文件,然后切换到上面下载完成后解压的文件下调用下面...

小房小田
2014/04/03
617
0
cocos2dx游戏资源加密之XXTEA

在手机游戏当中,游戏的资源加密保护是一件很重要的事情。 我花了两天的时间整理了自己在游戏当中的资源加密问题,实现了跨平台的资源流加密,这个都是巨人的肩膀之上的。 大概的思路是这样的...

乐逍遥jun
2016/02/22
51
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx访问日志格式

示例1 [root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf 增加日志的格式 include mime.types; default_type application/octet-stream; server_names_hash_max_size 409......

oschina130111
23分钟前
45
0
Windows远程访问Ubuntu18.04

一.安装 Xfce: sudo apt update sudo apt install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils 二.安装Xrdp: sudo apt install xrdp 验证 Xrdp : sudo systemctl status xrdp 三.......

LSFX
25分钟前
70
0
人脸识别私有化部署(三):人脸识别应用场景举例

经过近些年AI领域的快速发展,人脸识别应用场景也越来越广泛。可以应用在各行各业进行安防管理,考勤办公、人员管理等等。既可以单独使用解决问题,也可以集成在场景整体解决方案中。 1、人员...

shi_ming
29分钟前
90
0
重塑云原生,2020年云原生的四大关键趋势

明晚20:30,k3s空中课程准时开播!本节课将介绍k3s简单易用的功能扩展,包括Helm、Traefik LB等,让你使用k3s如虎添翼!访问以下链接即可报名噢: http://z-mz.cn/Pmwv 对于云原生社区而言,...

RancherLabs
29分钟前
62
0
Anaconda3修改jupyter_notebook打开的默认路径

1. windows下,找到jupyter_notebook配置文件jupyter_notebook_config.py: 默认安装在 C:\Users\Administrator\.jupyter\jupyter_notebook_config.py 修改jupyter_notebook_config.py #c.N......

MichaelShu
34分钟前
62
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部