cocos2dx + Lua + json能达到不更新安装包本地更新吗?

本文探讨了在iOS应用更新过程中遇到的问题,并提出使用Lua和JSON数据转换方式解决本地更新需求的方法,详细介绍了如何在Cocos2dx中整合Lua与JSON,以及具体的实现步骤。

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

JSON是 JavaScript Object Notation的简称,是一种轻量的数据表示方法。json格式采用key:value的方式记录数据,非常直观,比XML简洁,因而大受欢迎
介绍json格式前,先让我们看看XML格式。显然,XML 得到了相当多的关注(正面和负面的评价都有),已经在 ajax 应用程序中广泛使用:
<request>  
    <firstName>PeterCao</firstName>
</request>

现在大部分iOS手机软件的更新模式,都受控于苹果APPStore。那么如何才能越过雷池呢?有人在看到《大掌门》的辉煌之后,提议用Lua。但我们都知道,类似于Lua这样的脚本语言,都只是作为辅助功能或者扩展功能来体现他们的价值。在cocos2dx中,其是通过tolua++来把C++的类注册到Lua之中,从而使该类在Lua中能够运用自如。因此,这就意味着,只要自定义一个C++类就必须要通过修改build.xml并且写一个pkg类来映射到tolua++中,从而注册到Lua中。这样的话,我们制定好的网络协议,万一又要添加,是不是就要修改C++代码添加新类呢?答案当然是不行的,否则就违背了我们想要本地更新的初衷了。那么我们就想到了轻量级的数据转换格式json。我们所有的网络数据需要发送的内容,都通过lua的table封装好后,通过json进行转换成指定的格式。然后透传给c++,通过c++进行加密,封装包头,然后发送出去,是不是就不用修改该c++代码了呢?好了,想到这儿,我就到网上搜索了Lua转换json的库,(cjson)

具体实现如下:

一、必备的cjson文件8个放在同一个文件夹下,导入到工程中(记得一定要link你自定义的路径)


二、找到AppDelegate.cpp,添加如下代码:

添加头文件:#include "lua_extentions.h"

在applicationDidFinishLaunching函数中,注册luaengine注册完之后,添加如下代码:

CCLuaStack *pStack = pEngine->getLuaStack();
    lua_State* L = pStack->getLuaState();
    luaopen_lua_extensions(L);
之后就可以根据自己的情况,在lua中封装自己的网络发送消息,和接受消息了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值