【Cocos2d-Js基础教学(6)网络层(弱联网)的封装及使用】
谈到联网,在游戏中也是非常核心的模块,在官方Js-test中我们可以找到联网部分
的NetworkTest文件下有两个类
SocketIOTest.js(Socket 类)
WebSocketTest.js(WebSocket 类)

以上都是强联网类型的使用方法,官方已经封装的非常好用了,大家可以细读研究;
那么做一个联网交互游戏,也是并不复杂的;
那么下面我们来重点说下一弱联网的使用;
在Js-test中的弱联网的例子是:
XHRTest.js

这个类中包含了对弱联网的使用的基本方法,还包含了一个Buffer处理的方法,那么我们就对这个类开始进行封装
src目录下新建一个NetWork文件夹;
再新建一个HttpHelper.js(弱联网 类)
HttpHelper.js:
/**
* Created by yangshengjiepro on 15/4/23.
*/ function Http(){
var _succCallback = function(){};
var _errCallback = function(){}; }
Http.prototype.getJSON = function(url,data,callBack,errorCallBack ){
if(typeof (callBack) == "function"){
this._succCallback = callBack;
}else{
this._succCallback = function(){}
}
if(typeof (errorCallBack) == "function"){
this. _errorCallBack = errorCallBack;
}
var xmlHttp = new XMLHttpRequest(); var params = "";
if(typeof(data)=="object"){
for(key in data){
params+=(key+"="+data[key]+"&");
}
}else{
params = data;
} xmlHttp.open("POST",url);
xmlHttp.send(params); var me=this;
//=================== ajax回调
xmlHttp.onreadystatechange = function(){ cc.log(url+" "+ JSON.stringify(params) +xmlHttp.responseText);
if(xmlHttp.readyState == 4){
if(xmlHttp.status == 200){
MLog.l("data :",xmlHttp.responseText);
var strData = "";
if(xmlHttp.responseText.length>0){ //当内容为空时会有"[]"
strData=xmlHttp.responseText;
me._succCallback(strData); }else{
MLog.l("什么都没有,请检查网络");
return;
}
}
else{
//网络错误处理
if(me._errorCallBack) {
JSON.stringify(me._errorCallBack);
me._errorCallBack();
}
}
}else{
//网络错误处理
if(me._errorCallBack) {
me._errorCallBack();
}
}
}
}
Http.prototype.getJSON = function(url,data,callBack,errorCallBack )
定义了一个主要的方法Http.prototype.getJSON。
里面需要传入url地址,data数据,成功回调,错误回调;
在方法中,还申明了var xmlHttp = new XMLHttpRequest();
xmlHttp来处理网络的发送,和回调;
xmlHttp.open("POST",url);
xmlHttp.send(params);
if(typeof (callBack) == "function"){
this._succCallback = callBack;
}else{
this._succCallback = function(){}
}
if(typeof (errorCallBack) == "function"){
this. _errorCallBack = errorCallBack;
}
定义callBack和errorCallBack来进行消息访问的成功和失败的回调执行方法!通知我们
失败或成功后,继续进行什么操作?
//服务器接口地址
var serverAddr = "http://xxx/xxx/xxx";//正式线上 //具体方法实现方法
var NetManager = { /**
* 通用获取数据方法getMessage
* @param successCallBack 成功后回调函数
* @param errorCallBack 失败后回调函数(默认不填)
*/
getMessage: function(data,successCallBack) {
var http = new Http();
var sendData = data;
http.getJSON(serverAddr, sendData, successCallBack, null);
} };
我们定义一个NetManager.getMessage的通用方法来获取我们的网络请求访问!参数主要填2个,
一个data,post需要传入的数据,和成功后回调方法!
那么下面我们具体来使用调用一下我们这个弱联网使用类:
我定义了一个获取服务器时间的方法,需要传递一个APIId的Post数据10000的值就可以拿到服务器时间
//发送Post数据
var senddata = {
APIId:10000
}
//调用网络连接方法,获取data
NetManager.getMessage(senddata,function(data){
Mlog.c("data >>",data);
});

【Cocos2d-Js基础教学(6)网络层(弱联网)的封装及使用】的更多相关文章
- 【Cocos2d-Js基础教学 入门目录】
本教程视地址频在: 九秒课堂 完全免费 从接触Cocos2dx-Js以来,它的绽放的绚丽让我无法不对它喜欢.我觉得Js在不断带给我们惊喜:在开发过程中,会大大提升我们对原型开发的利用率,使用Js语言做 ...
- 前端工程师面试问题归纳(一、问答类html/css/js基础)
一.参考资源 1.前端面试题及答案整理(一) 2.2017年前端面试题整理汇总100题 3.2018最新Web前端经典面试试题及答案 4.[javascript常见面试题]常见前端面试题及答案 5.W ...
- JS基础(超级简单)
1 JS基础(超级简单) 1.1 数据类型 1.1.1 基本类型: 1) Number:特别注意:NaN的检测方法:Nan!=NaN;或者使用isNaN方法 2) ...
- JS基础学习1
1 JS 概述 一个完整的javascript实现是由以下3个不同部分组成的: (1) 核心(ECMAscript) (2) 文档对象模型(DOM) Document object ...
- 1、js基础内容
js基础内容 1. 编辑器 编译环境 浏览器 编辑软件 sublime DW H5Build Atom ==[注]尽可能多的去使用编辑器去编辑代码.== Html+css ==JS 逻辑== 比作建设 ...
- JS基础-表单元素-新表单元素-js概述
1.表单元素 1.input元素 1.隐藏域和文件选项框 1.隐藏域 <input type="hidden"> 要提交给服务器的数据,但是不想展示给用户看可以放在隐藏 ...
- 进击Node.js基础(二)
一.一个牛逼闪闪的知识点Promise npm install bluebird 二.Promise实例 ball.html <!doctype> <!DOCTYPE html> ...
- Java游戏服务器成长之路——弱联网游戏篇(源码分析)
前言 前段时间由于公司的一款弱联网游戏急着上线,没能及时分享,现在基本做的差不多,剩下的就是测试阶段了(本来说元旦来分享一下服务器技术的).公司的这款游戏已经上线一年多了,在我来之前一直都是单机版本, ...
- js基础 js自执行函数、调用递归函数、圆括号运算符、函数声明的提升 js 布尔值 ASP.NET MVC中设置跨域
js基础 目录 javascript基础 ESMAScript数据类型 DOM JS常用方法 回到顶部 javascript基础 常说的js包括三个部分:dom(文档document).bom(浏览器 ...
随机推荐
- Largest Rectangle in a Histogram(HDU1506)
Largest Rectangle in a Histogram HDU1506 一道DP题: 思路:http://blog.csdn.net/qiqijianglu/article/details/ ...
- SQL Server 优化器特性导致的内存授予相关BUG
我们有时会遇到一些坑,要不填平,要不绕过.这里为大家介绍一个相关SQL Server优化器方面的特性导致内存授予的相关BUG,及相关解决方式,也顺便回答下邹建同学的相关疑问. 问题描述 一个简单的查询 ...
- SQLSERVER 2012之AlwaysOn -- 同步模式下的网卡性能优化
本文是基于上一篇<SQLServer 2012之AlwaysOn -- 指定数据同步链路,消除网络抖动导致的提交延迟问题>的问题继续进行优化:具体背景请参照上文: 前后折腾了一个多 ...
- Vertica笔记
1.Table不做存储,本质是一个视图,真正存储在 Projection 里.可以针对一个Table建多个Projection . 查看表和 Projection 的个数: select anchor ...
- 你不得不知道的HTML5的新型标签
<article>标签定义外部的内容.比如来自一个外部的新闻提供者的一篇新的文章,或者来自 blog 的文本,或者是来自论坛的文本.亦或是来自其他外部源内容. <aside>标 ...
- 实验四 时序逻辑电路的VHDL设计
一.实验目的 熟悉QuartusⅡ的VHDL文本设计过程,学习简单时序逻辑电路的设计.仿真和测试方法. 二.实验 1. 基本命题 用VHDL文本设计触发器,触发器的类型可任选一种.给出程序设计.仿真分 ...
- paip.python3 的类使用跟python2 的不同之处
paip.python3 的类使用跟python2 的不同之处 #------python3的写法而且使用.. #class syllable(BaseClassA, BaseClassB): cla ...
- SHINY-SERVER R(sparkR)语言web解决方案 架设shiny服务器
1. shiny server简介 shiny-server是一种可用把R 语言以web形式展示的服务,其实RStudio公司自己构建了R Shiny Application运行的平台(http:// ...
- 生成月初月末便于拼接sql
for ($i=1; $i < 13; $i++) { $date = strtotime(date("2015-$i-01")); $firstday = date(&qu ...
- iOS开发---百度地图配置流程,2.6.0 版本 支持64位
1.首先需要在百度地图下载最新SDK:地址: http://developer.baidu.com/map/index.php?title=iossdk/sdkiosdev-download 2. ...