cocos2dx-lua_热更新_官方示例_AssetsManagerExTest

本文详细解析了Cocos2dx 3.10版本中AssetsManagerExTest的实现原理,包括客户端文件结构、版本信息文件project.manifest的作用、下载流程及资源更新机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下是Cocos2dx3.10的测试实例 AssetsManagerExTest 的分析


1.客户端的文件结构
pjmj--
--res
  --fonts
    --Marker Felt.ttf
  --Manifests
    --project.manifest  //客户端的版本信息文件
  --LauncherScene.jpg
  --LauncherScene.csd   //下载更新界面
  --MainScene.jpg
  --MainScene.csd       //游戏界面
--src
  --config.lua
  --main.lua            //主函数
  --app
    --views
 --LauncherScene.lua  //下载更新脚本
 --MainScene.lua      //游戏界面脚本
--MyApp.lua            //启动脚本
  --packages
    --mvc
 --AppBase.lua
 --init.lua
 --ViewBase.lua
 
(1)project.manifest 
{
"packageUrl" : "http://cocos2d-x.org/assets/cpp-tests-resources/assets_manager/AMTestScene1/",
"remoteManifestUrl" : "http://cocos2d-x.org/assets/cpp-tests-resources/assets_manager/AMTestScene1/project_dev.manifest",
"remoteVersionUrl" : "http://cocos2d-x.org/assets/cpp-tests-resources/assets_manager/AMTestScene1/version_dev.manifest",
"version" : "1.0.0",
"engineVersion" : "3.0 beta",


"assets" : {
"Images/background1.jpg" : {
"md5" : "..."
}
},
    
    "searchPaths" : [
    ]
}  
注意:
packageUrl 是web服务器的地址
remoteManifestUrl 在游览器中输入此地址,应该可以直接弹出一个下载 project_dev.manifest 的对话框
remoteVersionUrl 在游览器中输入此地址,应该可以直接弹出一个下载 version_dev.manifest 的对话框
version    1.0.0     1是大版本,后面的数字代表小版本


1.1.下载步骤
(1)LauncherScene.lua中,程序创建AssetsManagerEx对象。
AssetsManagerEx.lua在 Cocos/Cocos2d-x/cocos2d-x-3.10/cocos/scripting/lua-bindings/auto/api 下,其在
创建Android模拟器时通过 项目目录/frameworks/runtime-src/proj.android/jni/Android.mk 被调用,如下
$(call import-add-path,d:/Cocos/Cocos2d-x/cocos2d-x-3.10/cocos)
$(call import-module,scripting/lua-bindings/proj.android/prebuilt-mk)


AssetsManagerEx.lua中全是转化为lua对应的函数名字,没有内容,所以,最好查看AssetsManagerEx.cpp


(2)AssetsManagerEx的create函数要求传入2个参数:
客户端的版本信息文件project.manifest、下载保存目录。


假设下载保存目录为myUpdate,在win7上启动windows模拟器时,此目录会创建在项目目录之下,与res、src同级。
create函数的作用就是,若发现没有 myUpdate 目录,则创建一个 myUpdate 目录。
然后下载web服务器上的 project_dev.manifest、version_dev.manifest,但将它们重命名
为 project.manifest、version.manifest,其内容如下


project.manifest-------------------
{
"packageUrl" : "http://tools.itharbors.com/assets_manager/AMTestScene1/",
"remoteManifestUrl" : "http://tools.itharbors.com/assets_manager/AMTestScene1/project_dev.manifest",
"remoteVersionUrl" : "http://tools.itharbors.com/assets_manager/AMTestScene1/version_dev.manifest",
"version" : "1.2.0",
"engineVersion" : "3.x dev",


"assets" : {
"Images/assetMgrBackground1.jpg" : {
"md5" : "....."
},
"Images/ball.png" : {
"md5" : "..."
},
"Images/blocks.png" : {
"md5" : "..."
},
"compressed.zip" : {
"md5" : "...",
"compressed" : true
},
"Images/Bird.jpg" : {
"md5" : "..."
},
"Images/Daisy_Flower.jpg" : {
"md5" : "..."
},
"Images/Mountain_Reflections.jpg" : {
"md5" : "..."
},
"Images/Plitvice_National_Park.jpg" : {
"md5" : "..."
},
"Images/sakountala.jpg" : {
"md5" : "..."
},
"Images/Snake_River.jpg" : {
"md5" : "..."
},
"Images/Thunder.jpg" : {
"md5" : "..."
},
"Images/Tranquil_Lagoon.jpg" : {
"md5" : "..."
},
"Images/Tyrol.jpg" : {
"md5" : "..."
},
"Images/univ-lille1.jpg" : {
"md5" : "..."
},
"Images/Yellow_Garden_Flowers.jpg" : {
"md5" : "..."
},
"Images/Yellow_Lilly.jpg" : {
"md5" : "..."
},
"Images/Yellow_Tulips.jpg" : {
"md5" : "..."
}
},
    
    "searchPaths" : [
    ]
}


version.manifest-------------------
{
"packageUrl" : "http://tools.itharbors.com/assets_manager/AMTestScene1/",
"remoteManifestUrl" : "http://tools.itharbors.com/assets_manager/AMTestScene1/project_dev.manifest",
"remoteVersionUrl" : "http://tools.itharbors.com/assets_manager/AMTestScene1/version_dev.manifest",
"version" : "1.2.0",
"engineVersion" : "3.0 dev"
}


(3)然后AssetsManagerEx对象检查更新版本号
客户端的版本信息文件 project.manifest 中  "version" : "1.0.0"
服务器的版本信息文件 project.manifest 中  "version" : "1.2.0"
这里服务器的版本号明显大于客户端的,于是AssetsManagerEx对象会开启下载。


(4)AssetsManagerEx对象开启下载
服务器的版本信息文件 project.manifest 中 
packageUrl  http://tools.itharbors.com/assets_manager/AMTestScene1/


表明下载的资源在以上的网址中。
下载之后,如下:
myUpdate--
--Images
  --assetMgrBackground1.jpg
  --ball.png
  ...
--compressed        //压缩文件会直接解压
  -- ...
  
这样,原来我们只有一个res资源目录,现在又多了一个myUpdate资源目录,且每次先从myUpdate资源目录查找资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值