本站文章均为 李华明Himi 原创,转载务必在明显处注明:(作者新浪微博: @李华明Himi )
转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/iphone-cocos2dx/1354.html
☞ 点击订阅 ☜ 本博客最新动态!及时将最新博文通知您!
width="150" height="210" frameborder="0" scrolling="no" src="http://widget.weibo.com/relationship/bulkfollow.php?language=zh_cn&uids=1916000601&wide=1&color=FFFFFF,FFFFFF,0082CB,666666&showtitle=0&showinfo=1&sense=0&verified=1&count=1&refer=https%3A%2F%2Fblue-sea-697d.quartiers047.workers.dev%3A443%2Fhttp%2Fwww.himigame.com%2Fiphone-cocos2dx%2F1354.html&dpc=1" style="border-width: 0px; margin: 0px; padding: 0px; font-family: arial, helvetica, clean, sans-serif;font-size:12px; line-height: 16px; text-align: left; ">
首先说明一个问题:
为什么要在线更新资源和脚本文件!?
对于此问题,那要说的太多了,简单概括,如果你的项目已经在google play 或Apple Store 等平台上架了,那么当你项目需要做一些活动或者修改前端的一些代码等那么你需要重新提交一个新版本给平台,这时候你的上架时候是个不确定的时候,具体什么时候能上架,主要跟平台有关,你再着急,也没有用的。
那么如果你的项目是使用脚本语言进行编写的,例如lua,js等等,那么一旦你有需要更新你的项目,你完全可以通过从服务器下载最新的脚本和资源来实现在线更新,免去很多烦恼,至少更新再也不需要平台的审核来限制了不是么~(有些平台是禁止在线更新资源方式的,但是你懂得)
那么如何在项目中实现在线更新呢?则是本章具体需要跟大家分享的教程啦。
下面进入本章的重要内容:
在cocos2dx 2.x 引擎的扩展包(extensions)中有一个 AssetsManager
AssetsManager 主要功能就是下载资源到本地,并帮你解压!
如果大家还不知道这个类,那么可以先到cocos2dx引擎的http:///Users/slater/Documents/cocos2d-2.1rc0-x-2.1.2-hotfix/samples/Cpp/AssetsManagerTest 目录下运行示例。
(注:当前Himi使用的是cocos2dx-2.1.2hotfix版本这个示例在我的mac os无法正常运行)
下面Himi新建个项目来详细讲解AssetsManager:
Himi这里拿lua项目进行,首先创建一个新的cocos2dx-lua 的项目:
第一步:将项目中Resoures目录下的 hello.lua 删除!
第二步:在AppDelegate.h 中添加如下代码:
先导入所需的头文件:
1
2
3
4
5
6
7
8
9
10
11
|
#include "cocos2d.h"
#include "AssetsManager.h"
#include "cocos-ext.h"
using namespace std;
using namespace cocos2d;
using namespace extension;
#if (CC_TARGET_PLATFORM != CC_PLATFORM_WIN32)
#include <dirent.h>
#include <sys/stat.h>
#endif
|
继续添加变量和方法名:
1
2
3
|
void updateFiles();
void createDownDir();
string pathToSave;
|
pathToSave 变量用于保存下载的路径!用于添加到 CCLuaEngine 引擎中,这样便于CCLuaEngine查找Lua文件!
第三步:在AppDelegate.cpp 中添加如下代码:
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
|
static AssetsManager* pAssetsManager;
void AppDelegate::updateFiles(){
createDownDir();
pAssetsManager = new AssetsManager(
|