Cocos2d-x   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了【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(){}
    }
    typeof (errorCallBACk) == "function"){
        this. _errorCallBACk = errorCallBACk;
    }
    var xmlhttp = new XMLhttprequest();

    var params = "";
    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,errorCallBACk )

定义了一个主要的方法http.prototype.getJSON。

里面需要传入url地址,data数据,成功回调,错误回调;

在方法中,还申明了varxmlhttp =new XMLhttprequest();

xmlhttp来处理网络的发送,和回调;

xmlhttp.open("POST",url);
xmlhttp.send(params);

我们选择Post方式来进行网络的数据提交;
最后通过 xmlhttp.onreadystatechange来进行数据回调
     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数据
varsenddata = {
APIId:10000
}
//调用网络连接方法,获取data
NetManager.getmessage(senddata,function(data){
@H_442_227@mlog.c("data >>",data);
});

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

本节知识点源码:

源码下载(百度盘)

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

大佬总结

以上是大佬教程为你收集整理的【Cocos2d-Js基础教学(6)网络层(弱联网)的封装及使用】全部内容,希望文章能够帮你解决【Cocos2d-Js基础教学(6)网络层(弱联网)的封装及使用】所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。