Cocos2d-x::截图保存、CCArray

Cocos2d-x::截图保存、CCArray,第1张

概述一、截图保存功能的实现 使用CCRenderTexture渲染纹理,从而添加到场景,同样可以把渲染的纹理保存为png或jpg格式; 截图功能实现: void CTestLayer::menuCloseCallback(CCObject* pSender) {       SaveScreenShot(); } void CTestLayer::SaveScreenShot() {       CC 一、截图保存功能的实现
使用CCRenderTexture渲染纹理,从而添加到场景,同样可以把渲染的纹理保存为png或jpg格式;
截图功能实现: voID CTestLayer::menuCloseCallback(CCObject* pSender) { SaveScreenShot(); }
voID CTestLayer::SaveScreenShot() { CCSize size = CCDirector::sharedDirector()->getWinSize() //使用尺寸初始化空的渲染纹理对象 CCRenderTexture* texture = CCRenderTexture::create((int)size.wIDth,(int)size.height); texture->setposition(ccp(,)); texture->begin();//开始获取 //遍历场景节点对象,填充纹理 CCDirector::sharedDirector()->getRunningScene()->visit(); texture->end();//结束获取 //保存,windows下在Win32/DeBUG目录下,iOS如下所示 texture->savetofile(“screenshot.png”,kCCImageFormatPNG); } 附iOS下获取沙盒目录路径 CCfileUtils* u = CCfileUtils::sharedfileUtils(); cclog("%s",u->getWritablePath().c_str()); 目录如下所示: /Users/dizi/library/Developer/CoreSimulator/Devices/F2B95F6B-C5E8-43D6-A184-AB5F89189AE7/data/Containers/Data/Application/0169E75A-DC42-4E43-89DF-629EDAAC371F/documents/

PS:生成精灵的两种方法
二、CCArray
1、CCArray类似于Apple的NSMutableArray,但要比其好用,不过还是不如C++的STL库; API: http://cn.cocos2d-x.org/tutorial/show?id=554

2、这里要说一下remove和fastremove: //普通删除 voIDccArrayRemoveObjectAtIndex(ccArray*arr,unsignedintindex,boolbReleaSEObj) { CCAssert(arr&&arr->num>0&&index<arr->num,"InvalIDindex.Outofbounds"); //删除元素内容,位置仍保留着 if(bReleaSEObj) { CC_SAFE_RELEASE(arr->arr[index]); } //长度减1 arr->num--; //获得要删除的元素后的元素个数 unsignedintremaining=arr->num-index; if(remaining>0) //将要删除元素后的所有元素逐个向前移动 memmove((voID*)&arr->arr[index],(voID*)&arr->arr[index+1],remaining*sizeof(CCObject*)); } } //快速删除 voIDccArrayFastRemoveObjectAtIndex(ccArray*arr,87); background-color:inherit; Font-weight:bold;">intindex) CC_SAFE_RELEASE(arr->arr[index]); //获取最后一个元素 intlast=--arr->num; //把最后一个元素插到删除元素的位置上 arr->arr[index]=arr->arr[last]; } @H_404_512@ 如果有array={0,2,3,4,5},如果要删除3,使用普通删除得到的结果{0,5},使用快速删除得到的结果是{0,5,4}。可以看出快速删除的效率比普通删除效率高,就差在移动元素的时间复杂度上。 使用了覆盖的技术,将旧数据进行覆盖,不能保证原来顺序的不变;
3.内存分配 CCArray在插入数据时检测到空间不足会增加一倍的空间,直到满足分配; 两个CCArray判等的条件是它中的每个元素相等即可,不考虑它们空间的大小; 由于CCArray使用的是C接口,它不会有Objective-C消息的开销; 它不进行边界溢出、空间需求等安全检查上; 使用CCArray时要进行retain,析构时要进行release; 总结

以上是内存溢出为你收集整理的Cocos2d-x::截图保存、CCArray全部内容,希望文章能够帮你解决Cocos2d-x::截图保存、CCArray所遇到的程序开发问题。

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

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

原文地址:https://54852.com/web/1058862.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存