谈到联网,在游戏中也是非常核心的模块,在官方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);

 我们选择Post方式来进行网络的数据提交;
最后通过xmlHttp.onreadystatechange来进行数据回调
 
     if(typeof (callBack) == "function"){
this._succCallback = callBack;
}else{
this._succCallback = function(){}
}
if(typeof (errorCallBack) == "function"){
this. _errorCallBack = errorCallBack;
}

定义callBack和errorCallBack来进行消息访问的成功和失败的回调执行方法!通知我们
失败或成功后,继续进行什么操作?

那么网络层的基本简单封装(组合,其实在Js中大部分都是组合)就完成了,我们就可以利用这个方法进行网络访问了,但是我们还得再把这个
方法,再精简一下,再拓展一下,方便我们以后更方便的使用,我们再新建一个NetManager.js这个类
 
NetManager.js:
//服务器接口地址
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);
});

 
直接调用我们的getMessage就可以实现我们的网络访问了!!!看一下我们调用的输出!
 
 

本节知识点源码:

源码下载(百度盘)

自己创建新工程,解压下载的文件,将所有文件拷贝到你新工程的目录下全部覆盖既可以运行!

 
 
 
 
 

【Cocos2d-Js基础教学(6)网络层(弱联网)的封装及使用】的更多相关文章

  1. 【Cocos2d-Js基础教学 入门目录】

    本教程视地址频在: 九秒课堂 完全免费 从接触Cocos2dx-Js以来,它的绽放的绚丽让我无法不对它喜欢.我觉得Js在不断带给我们惊喜:在开发过程中,会大大提升我们对原型开发的利用率,使用Js语言做 ...

  2. 前端工程师面试问题归纳(一、问答类html/css/js基础)

    一.参考资源 1.前端面试题及答案整理(一) 2.2017年前端面试题整理汇总100题 3.2018最新Web前端经典面试试题及答案 4.[javascript常见面试题]常见前端面试题及答案 5.W ...

  3. JS基础(超级简单)

    1     JS基础(超级简单) 1.1 数据类型 1.1.1   基本类型: 1)        Number:特别注意:NaN的检测方法:Nan!=NaN;或者使用isNaN方法 2)       ...

  4. JS基础学习1

    1 JS 概述 一个完整的javascript实现是由以下3个不同部分组成的: (1)     核心(ECMAscript) (2)     文档对象模型(DOM)  Document object ...

  5. 1、js基础内容

    js基础内容 1. 编辑器 编译环境 浏览器 编辑软件 sublime DW H5Build Atom ==[注]尽可能多的去使用编辑器去编辑代码.== Html+css ==JS 逻辑== 比作建设 ...

  6. JS基础-表单元素-新表单元素-js概述

    1.表单元素 1.input元素 1.隐藏域和文件选项框 1.隐藏域 <input type="hidden"> 要提交给服务器的数据,但是不想展示给用户看可以放在隐藏 ...

  7. 进击Node.js基础(二)

    一.一个牛逼闪闪的知识点Promise npm install bluebird 二.Promise实例 ball.html <!doctype> <!DOCTYPE html> ...

  8. Java游戏服务器成长之路——弱联网游戏篇(源码分析)

    前言 前段时间由于公司的一款弱联网游戏急着上线,没能及时分享,现在基本做的差不多,剩下的就是测试阶段了(本来说元旦来分享一下服务器技术的).公司的这款游戏已经上线一年多了,在我来之前一直都是单机版本, ...

  9. js基础 js自执行函数、调用递归函数、圆括号运算符、函数声明的提升 js 布尔值 ASP.NET MVC中设置跨域

    js基础 目录 javascript基础 ESMAScript数据类型 DOM JS常用方法 回到顶部 javascript基础 常说的js包括三个部分:dom(文档document).bom(浏览器 ...

随机推荐

  1. Hadoop-1.2.1 安装步骤小结(ubuntu)

    1.安装ubuntu系统 如果不使用云服务器,可以使用虚拟机WmWare安装,具体安装步骤这里就不讲了,ubuntu系统下载地址:http://www.ubuntu.com/download/desk ...

  2. CodeIgniter nginx 404

    默认情况下CI 不支持路由模式需要在server里面配置,配置成如下即可: server { listen 80 ; server_name wechat.XX.com.cn; root XX; in ...

  3. [安卓] 4、CheckBox、RadioButton和Toast简单用法

      和按钮类似,这里采用cb1.setOnCheckedChangeListener(this);方法分别对3个CheckBox进行CheckChange事件绑定,然后在onCheckedChange ...

  4. 【Android UI设计与开发】9:滑动菜单栏(一)开源项目SlidingMenu的使用和示例

    一.SlidingMenu简介 相信大家对SlidingMenu都不陌生了,它是一种比较新的设置界面或配置界面的效果,在主界面左滑或者右滑出现设置界面效果,能方便的进行各种操作.很多优秀的应用都采用了 ...

  5. Entity Framework后台采用分页方式取数据与AspNetPager控件的使用

    本文是一个对AspNetPager控件使用的笔记! 有关AspNetPager控件可以查看杨涛主页.这是一个开放的自定义ASP.NET控件,支持各种自定义的数据分页方式,使用很方便,而且功能也很强大, ...

  6. C++ 顺序容器

    <C++ Primer 4th>读书笔记 顺序容器内的元素按其位置存储和访问.容器类共享公共的接口,每种容器类型提供一组不同的时间和功能折衷方案.通常不需要修改代码,只需改变类型声明,用一 ...

  7. 3-MSP430引脚中断

    为了写一篇文章做铺垫--提醒着自己,,,,,, 这两天一直在寻找 #pragma vector = PORT1_VECTOR __interrupt void P1_Interrupt()//P1口中 ...

  8. [读书笔记]C#学习笔记五: C#3.0自动属性,匿名属性及扩展方法

    前言 这一章算是看这本书最大的收获了, Lambda表达式让人用着屡试不爽, C#3.0可谓颠覆了我们的代码编写风格. 因为Lambda所需篇幅挺大, 所以先总结C#3.0智能编译器给我们带来的诸多好 ...

  9. paip. http 405 的解决..

    paip.  http  405 的解决.. get>>> POST 或者 syeofe.. 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来源:a ...

  10. iOS-网络请求-AFN升级至AFN3.0

    AFNetworking是一款在OS X和iOS下都令人喜爱的网络库.为了迎合iOS新版本的升级, AFNetworking在3.0版本中删除了基于 NSURLConnection API的所有支持. ...