社区开源框架网络模块:ConnectionManager详解
时间:2022-07-24
本文章向大家介绍社区开源框架网络模块:ConnectionManager详解,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
地址:https://github.com/Golangltd/LollipopCreator
框架文档地址:GameAIs.Com
LollipopCreator:ConnectionManager
LollipopCreator游戏框架
游戏客户端开发中,由于制作人或者策划立项的不同,导致前端开发并不像后端框架不变,例如 2D游戏开发,引擎选择就比较多,Unity、cocos、 白鹭等都可以,本系列就是给大家开源一套cocos creator引擎开发的2D游戏框架LollipopGo。 creator 系统为例,给大家梳理下前端2D游戏架构的基础设计思想。
Index
返回首页
- 如何设计
- 调用流程
- 实例代码
如何设计
1. 连接数据加载和处理,主要是网络相关。
调用流程
例子:
checkOffline: function (dt) {
// 是否会登录
if (!this.logined) {
return
}
// 是否是弹框
if (this.asking) {
return
}
// 心跳
this.heartbeat()
this.elapsed += Math.min(0.5, dt)
if (this.elapsed < 10) {
return
}
cc.log("掉线了,马上重连", this.elapsed)
this.elapsed = 0
if (this.tries < 10) {
this.tries++
client.reLogin()
eventMgr.emit('connect-tip', this.tries)
cc.log("网络中断,拼命连接中.....", this.tries)
this.showCommonTip(this.tries)
} else {
cc.log("弹出重连ui", this.tries)
this.popAskDialog()
this.showCommonAsk()
}
},
注意点:检查是否断线
实例代码
cc.Class({
extends: cc.Component,
properties: {
tip: cc.Node,
},
onLoad: function () {
window.connMgr = this
this.logined = false
this.tries = 0
this.asking = false
this.elapsed = 0
this.isreconnect = false
this.tip.active = false
let n = 0
// this.schedule((dt) => {
// this.checkOffline(dt)
// }, 0.5, 1e7, 0)
},
checkOffline: function (dt) {
// 是否会登录
if (!this.logined) {
return
}
// 是否是弹框
if (this.asking) {
return
}
// 心跳
this.heartbeat()
this.elapsed += Math.min(0.5, dt)
if (this.elapsed < 10) {
return
}
cc.log("掉线了,马上重连", this.elapsed)
this.elapsed = 0
if (this.tries < 10) {
this.tries++
client.reLogin()
eventMgr.emit('connect-tip', this.tries)
cc.log("网络中断,拼命连接中.....", this.tries)
this.showCommonTip(this.tries)
} else {
cc.log("弹出重连ui", this.tries)
this.popAskDialog()
this.showCommonAsk()
}
},
heartbeat() {
// if (this.isreconnect) return
client.send({
Protocol: 7,
Protocol2: 81,
Uid: me.UID
})
},
reset(logined) {
eventMgr.emit('connect-tip', 0)
this.isreconnect = false
this.elapsed = 0
this.logined = logined
this.tries = 0
this.tip.active = false
cc.log("reset", this.tries)
if (logined) {
this.heartbeat()
}
},
popAskDialog() {
if (this.asking) {
return
}
this.asking = true
eventMgr.emit('connect-tip', 0)
eventMgr.emit('connect-dialog')
},
reconnect: function () {
this.asking = false
this.tries = 1
this.elapsed = 0
client.reLogin()
eventMgr.emit('connect-tip', this.tries)
cc.log("网络中断,拼命连接中.....", this.tries)
},
showCommonTip: function (tries) {
this.tip.active = (tries > 0)
if (tries > 0) {
this.tip.PathChild('val', cc.Label).string = `网络中断,拼命连接中...(${tries})`
}
},
showCommonAsk: function () {
this.tip.active = false
UIMgr.show("MessageBox", "游戏已断开连接 请重新连接", 'ok', () => {
cc.audioEngine.stopAll()
cc.game.restart()
})
},
});
版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢。
- 【框架】为降低机器学习开发者门槛,苹果发布了Turi Create框架
- 新闻数据库分表案例
- 建立智能的解决方案:将TensorFlow用于声音分类
- Plugin Hook 设计与实现
- 数据与应用程序间通信·UDP Socket
- Java 数据类型转换
- Spring boot with Scheduling
- Spring Properties 文件读取
- 【学术】你真的知道什么是随机森林吗?本文是关于随机森林的直观解读
- Spring boot 将 Session 放入 Redis
- 【教程】估算一个最佳学习速率,以更好地训练深度神经网络
- SNS 数据库设计
- CentOS7 下 MySQL 5.7 重置root密码
- 通过简单的线性回归理解机器学习的基本原理
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 图论--LCA--在线RMQ ST
- 微信小程序-基于高德地图API实现天气组件(动态效果)
- PG13 B-tree索引去重
- egg中 controller 调用controller如何实现
- CF思维联系– CodeForces -CodeForces - 992C Nastya and a Wardrobe(欧拉降幂+快速幂)
- 数学--数论--欧拉降幂--P5091 欧拉定理
- 重学巩固你的Vuejs知识(上)
- js原生模态登录框
- 客户决策 | 我的代码没有else
- LeetCode 1595 Minimum Cost to Connect Two Groups of Points (动态规划)
- js DOM系统
- css的radial-gradient大详解
- 你想知道的优惠券业务,SkrShop告诉你
- js汇率计算器系统
- 数学--数论--欧拉降幂和广义欧拉降幂(实用好理解)