cocosjs接mysql_kbengine + cocos2d-js-demo理解

目录 kbengine_cocos2d_js_demo/cocos2d-js-client 就是一个典型的 Cocos2d-JS 项目,项目结构可以看Cocos 官方说明文档《Cocos2d-JS项目结构介绍》,我们现在只需要知道以下事实即可。

相关 js 文件通过 project.json 引入

main.js 是整个项目的逻辑入口

main.js

62d66d59e2a24d05e8a6c5c1cb25cfd8.png

如上图,主要的逻辑有两块

57~58行,即设置服务器的 ip、port

67行,是 Cocos 的启动 Scene

由 project.json 里面可以看到,StartScene 所在的具体路径应该在 src/cc_scripts/StartScene.js

StartScene.js

StartScene 的展现逻辑我们不去管,直接看「登录」按钮点击下去后的处理。

2c445b76d8be04c7879e2318bb699ca4.png

这里通过 fire 一个 「login」事件,把 username 和 password 发送到 plugins/kbengine_js_plugins/kbengine.js 去处理。

kbengine.js

324b9d035d4e790da965eb83c44b2293.png

可以看到,2377 行注册了一个事件,即 kbengine.js 里的 login 函数,会响应 「login」 事件。

由上可知,客户端在启动的时候,除了界面展示,最重要的就是在 installEvents 函数里,通过 KBEngine.Event.register 注册各个事件响应函数,即 kbengine.js 这个插件与客户端逻辑代码的交互是通过事件来完成的。

具体的 register/fire 代码这里不再贴出,有兴趣的可以自己去看。基本逻辑如下

register 的时候,在一个 list 里存放 的键值对。

fire 的时候,遍历找到这个事件名对应的回调函数,填入参数来 apply 。

「登录」前需要加载通信协议,加载过程需要在服务器与客户端之间进行函数交互调用。

通过在服务器端和客户端分别解析 res/server/messages_fixed.xml 中声明的协议来完成交互。 其实就是分别构建 键值对。

那么,客户端是怎么知道如何解析这个协议的呢?

kbengine.js / login

510cabed39a907630397937afeb89d0e.png

login 函数中,3086行参数为 true 来调用 login_loginapp,所以逻辑会进入 3093~3096 行,即使用 ws 协议访问在 main.js 里配置的 ip:port;在 connect 成功后的回调函数是 kbengins.js 中的 onOpenLoginapp_login。

ws 协议介绍,这里给出部分截图,便于理解。

e53f49676daafce644fa5296365c3d00.png

kbengine.js / onOpenLoginapp_login

765ace1d913c6b061c055d9607341a16.png

opOpenLoginapp_login 主要有几个逻辑:

2600 行,设置 currentserver = 'loginapp'

2601 行,设置 currentstate = 'login'

2605~2610 行,访问服务器端的 loginapp::importClientMessages 函数,回调函数是 kbengins.js 中的 Client_onImportClientMessages 函数

为什么 2605~2607 行能访问到 loginapp 中的 importClientMessages 函数?

因为 2066 行,KBEngine.messages.Loginapp_impo

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值