发布于:,更新于:
《方案》拼图在线更新
拼图10103D-拼图下载模块
拼图下载模块
目录
一、关键类或对象
二、关键步骤
三、关键方法
四、其他细节
五、资源目录
六、服务器追加新图
一、关键类或对象:
1 2 3 4
| CJigsawMapLayer //走廊类,有个tableView成员,用于展示CJigsawFrame CJigsawFrame //画框类,位于tableView的cell上 CDataCenter::g_data //拼图数据对象,全局,存储拼图的部分数据(如拼图解锁数等) vector<jigsawLevelCfg> g_levelsCfgArr; //拼图配置容器,全局,汇总走廊内置拼图+云拼图的配置
|
二、关键步骤:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| 1.启动游戏时,读取拼图配置 执行:AppDelegate()/startGame()/initStyle()/::dealLevelsCfgByGroup() //从文件读配置,生成配置列表,放入容器 域:blockStyle.cpp 实现: 先读取内置本地配置文件,写入g_levelsCfgArr 再 若writablePath下有云配置文件,读取追加到g_levelsCfgArr 否则读取内置云配置文件,读取追加到g_levelsCfgArr
2.启动游戏时,检查下载老用户丢失的资源: 执行:AppDelegate()/startGame()/initStyle()/::dealLevelsCfgByGroup()/ 域:blockStyle.cpp 实现: ::dealLevelsCfgByGroup() { ... //检查下载本地拼图至已解锁拼图之间的所有拼图,索引区间[localIndex+1,openedJigsawCount-1] int local = g_data->getLocalJigsawCnt() ; int open = g_data->getOpenedJigsawCnt() ; for(int idx=local; idx<open ; ++idx) { g_data->checkDownloadJigsawsByIdxInOrder(idx, true,1) ; ///优先级为1 } ... }
3.每次解锁拼图时,向后下载10幅+检查更新云配置: 执行:不固定 域:blockStyle.cpp::CDataCenter::setOpenedJigsawCnt 实现: g_data->CDataCenter::setOpenedJigsawCnt(int cnt,bool donate) { ... if(!donate) //donateJigsaw 时,g_levelsCfgArr还未初始化 { checkJigsawUpdate(); //老版本用户:检查更新list-online.json //新版本用户:检查更新list-online2.json checkDownloadJigsawsWhenUnlock(); //检查下载后面10幅拼图,优先级为0 } ... }
4.监听下载拼图 执行:CJigsawMapLayer::tableCellAtIndex()/CJigsawFrame::create()/CJigsawFrame::init()/CJigsawFrame::registerDownLoadListener() 域:CJigsawMapLayer.cpp::CJigsawFrame::registerDownLoadListener 实现: 下载中,更新进度条,判断是否展示广告,更新广告logo等 下载完成,标记拼图.hasDownload = true ;刷新UI ; 下载失败,showWifiLayer();
5.点击下载拼图 执行:点击画框/CjigsawFrame::onStartJigsaw() 域:CJigsawMapLayer.cpp::CJigsawFrame::onStartJigsaw 实现: 资源已经存在,那么走假进度动画 从Action的回调里得知动画进度 资源不存在时,下载: g_data->CDataCenter::checkDownloadJigsawsByIdx(idx, true) ; 下载的进度通过事件,分发给CJigsawFrame对象,更新到UI
|
三、关键方法:
- ::dealLevelsCfgByGroup();
- CJigsawFrame::registerDownLoadListener();
- CjigsawFrame::onStartJigsaw();
- CDataCenter::setOpenedJigsawCnt();
- CDataCenter::checkDownloadJigsawsByIdx();
立即下载拼图,用于用户点击的场景,可以多任务并行下
下载进度通过事件分发给对象
- CDataCenter::checkDownloadJigsawsByIdxInOrder()
下载任务添加到容器中,容器管理下载任务
优先级越大越优先下载
某任务三次没响应,丢到末尾,切到下一个
一次轮询的睡眠时间是5秒
下载进度通过事件分发给对象
四、细节补充:
- CocosUI线程睡眠时,在BulldogNet的回调里,直接执行关于GL的操作,UI会出现问题;
例:熄屏状态下,拼图下载完,读纹理创建模糊图精灵放到画框,创建出来纹理是黑的 ;
状态:已解决;
方案:利用Scheduler把回调放到UI线程
- 资源下载优先级:
用户点击下载拼图>自动下载拼图>下载音乐
- 老用户更新后,资源丢失所采取的措施:
自动检查并下载索引区间[localJigsawCount,openedJigsawCount)
- 拼图下载流程
自动下载时->接收事件,跑真进度->不是手动,不弹广告->下载完,更新画框->用户点击->用Action跑假进度->播广告->广告logo消失
手动下载时->接收事件,跑真进度->弹广告->logo消失->下载完,更新画框
- 云配置文件更新
老服务器/BlockJigsawPuzzle/config/list.json 会同步内容到 老版本用户的list-online.json
新服务器/BlockJigsawPuzzle/JigsawConfig2/list.json 会同步内容到 新版本用户的list-online2.json
五、资源目录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| 服务器目录 老:http://d265krnl4xx9mj.cloudfront.net/BlockJigsawPuzzle/ CheckJigsawList.php 后端文件 config/ version.josn 版本文件 list.json 拼图配置 新:http://resgame.appcpi.net/BlockJigsawPuzzle/ JigsawConfig2/ CheckJigsawList2.php version2.json list2.json
包目录 wood21010Jigsaw_2/_1010Jigsaw/ _customJigsaws-pieces48-wptop50/ 原50幅 list-wp.json list-online.json _customJigsaws-pieces48-wptop25/ 新25幅 list-wp_new.json list-wp2.json list-online2.json 用户目录 writablePath/ list-online.json list-online2.json ... 一堆各拼图文件夹
|
六、服务器追加新拼图
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 用脚本生成文件,更新到服务器 先本地测试: http://yujizhu.com:8083/BlockJigsawPuzzle/config/list.json http://yujizhu.com:8083/BlockJigsawPuzzle/config/version.json http://yujizhu.com:8083/BlockJigsawPuzzle/JigsawConfig2/list.json http://yujizhu.com:8083/BlockJigsawPuzzle/JigsawConfig2/version.json http://yujizhu.com:8083/BlockJigsawPuzzle/增拼图压缩包 上线: 联系人:杜家兑 http://d265krnl4xx9mj.cloudfront.net/BlockJigsawPuzzle/config/list.json 检查版本号、拼图数、url http://d265krnl4xx9mj.cloudfront.net/BlockJigsawPuzzle/config/version.json 检查版本号 http://d265krnl4xx9mj.cloudfront.net/BlockJigsawPuzzle/ 增加拼图zip http://resgame.appcpi.net/BlockJigsawPuzzle/JigsawConfig2/list.json 检查版本号、拼图数、url http://resgame.appcpi.net/BlockJigsawPuzzle/JigsawConfig2/version.json 检查版本号 http://resgame.appcpi.net/BlockJigsawPuzzle/ 增加拼图zip
|