quick-cocos2d-x图片资源加密(续)

quick-cocos2d-x图片资源加密(续),第1张

概述通过前篇的修改,我们已经能够在Windows平台的player,以及Android上使用加密的常见格式(png、jpg等)的图片资源了。不过,在MAC上的player,以及IOS上,加载资源时调用的是另外的代码,所以我们需要另外作修改。 首先来修改Mac上的Player代码。我们这次要修改的是lib\cocos2d-x\cocos2dx\platform\mac目录下的CCImage.mm文件。在

通过前篇的修改,我们已经能够在windows平台的player,以及AndroID上使用加密的常见格式(png、jpg等)的图片资源了。不过,在MAC上的player,以及IOS上,加载资源时调用的是另外的代码,所以我们需要另外作修改。

首先来修改Mac上的Player代码。我们这次要修改的是lib\cocos2d-x\cocos2dx\platform\mac目录下的CCImage.mm文件。在_initWithfile这个函数的开头,可以看到以下代码:

1 2 Nsstring*fullPath=[NsstringstringWithUTF8String:path]; jpg=[[NSImagealloc]initWithContentsOffile:fullPath];

我们用以下代码来代替:

2 3 4 5
unsigned long fileSize=0; char *pfileData=cocos2d::CZHelperFunc::getfileData(path, "rb" ,&fileSize); NSData*adata=[[NSDataalloc]initWithBytes:pfileDatalength:fileSize]; delete []pfileData; jpg=[[NSImagealloc]initWithData:adata];

而在CCImage::initWithImagefile函数中,又看到了熟悉的语句:

1
*pfileData=CCfileUtils::sharedfileUtils()->getfileData(strTemp.c_str(),&fileSize);

修改这个应该已经很熟练了:

1
*pfileData=CZHelperFunc::getfileData(strTemp.c_str(),宋体"> 另外,HelperFunc.h头文件的包含肯定是必须的,后面的修改也一样,就不再每次都说明了。

好,现在MAC支持加密的图片文件了。如果要支持加密的pList文件的话,还要改同一目录下的CCfileUtilsMac.mm文件。找到CCfileUtilsMac::createCCDictionaryWithContentsOffile函数,需要修改的是这两句:

Nsstring*pPath=[NsstringstringWithUTF8String:fullPath.c_str()];NSDictionary*pDict=[NSDictionarydictionaryWithContentsOffile:pPath];

需要写的代码就比以前的稍多一点了:

5 6 7 8 9 10 11
*pfileData=CZHelperFunc::getfileData(fullPath.c_str(),monospace!important; border:0px!important; bottom:auto!important; float:none!important; height:auto!important; left:auto!important; line-height:1.1em!important; outline:0px!important; overflow:visible!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; wIDth:auto!important; Font-size:1em!important; min-height:auto!important; background:none!important">NSData*data=[[[NSDataalloc]initWithBytes:pfileDatalength:fileSize]autorelease]; nspropertyListFormatformat; Nsstring*error; NSMutableDictionary*pDict=(NSMutableDictionary*)[ nspropertyListSerializationpropertyListFromData:data mutabilityOption:nspropertyListMutableContainersAndLeaves format:&format errorDescription:&error];

改好了MAC,修改IOS就比较容易了,因为修改方法很类似,只是文件不同。要修改的是lib\cocos2d-x\cocos2dx\platform\ios目录下的CCImage.mm和CCfileUtilsIOS.mm文件。这两个文件里要修改的函数都是一样的,连需要修改的代码都几乎一样,唯一需要稍为注意的是在IOS里要用UIImage来代替Mac里的NSImage。这里就不再贴出代码了。

经过这么多修改,基本上常用的图片文件都已经支持,不过,有些特殊格式的文件也是有可能用到的,顺便提一下吧。

支持PVR文件,要修改lib\cocos2d-x\cocos2dx\textures目录下的CCTexturePVR.cpp文件,找到CCfileUtils::sharedfileUtils()->getfileData所在的那一句进行修改就是了,不需要多说了。

支持TGA文件,修改lib\cocos2d-x\cocos2dx\support\image_support下的Tgalib.cpp,类似上面,也是一条语句的事。

另外在lib\cocos2d-x\cocos2dx\textures目录下还有个文件CCTextureCache.cpp,我没细看,应该是跟TMX MAP的载入有点关系。里面也只是一条语句的事情,一起改掉吧,呵呵。

经过以上修改后,应该能满足绝大多数的加密需求了。粗粗的浏览了一下代码,应该只有PKM文件无法支持,因为它是直接通过JNI调用AndroID的API来对文件解码的,不是太好修改了。

以上是我个人的修改方法,肯定还有更好的改法,希望能和大家相互分享和交流。如果有错误的地方,也请大家多多指正!

(

2014.2.24更新:

支持pvr.ccz文件,需要修改lib\cocos2d-x\cocos2dx\support\zip_support\ZipUtils.cpp文件里的ccInflateCCZfile函数,也是一条读文件内容的语句,各平台下都适用。

感谢群里的朋友“蚀生”提供这一信息!

)


源地址:http://my.oschina.net/SunlightJuly/blog/189971

总结

以上是内存溢出为你收集整理的quick-cocos2d-x图片资源加密(续)全部内容,希望文章能够帮你解决quick-cocos2d-x图片资源加密(续)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1078274.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)