`
ch_kexin
  • 浏览: 902531 次
  • 性别: Icon_minigender_2
  • 来自: 青岛
社区版块
存档分类
最新评论

Cocos Creator JS http通信封装

 
阅读更多
/**
 * Http 请求封装
 */
const HttpHelper = cc.Class({
    extends: cc.Component,

    statics: {
    },

    properties: {

    },

    /**
     * get请求
     * @param {string} url 
     * @param {function} callback 
     */
    httpGet(url, callback) {
        cc.myGame.gameUi.onShowLockScreen();
        let xhr = cc.loader.getXMLHttpRequest();
        xhr.onreadystatechange = function () {
            // cc.log("Get: readyState:" + xhr.readyState + " status:" + xhr.status);
            if (xhr.readyState === 4 && xhr.status == 200) {
                let respone = xhr.responseText;
                let rsp = JSON.parse(respone);
                cc.myGame.gameUi.onHideLockScreen();
                callback(rsp);
            } else if (xhr.readyState === 4 && xhr.status == 401) {
                cc.myGame.gameUi.onHideLockScreen();
                callback({status:401});
            } else {
                //callback(-1);
            }


        };
        xhr.withCredentials = true;
        xhr.open('GET', url, true);

        // if (cc.sys.isNative) {
        xhr.setRequestHeader('Access-Control-Allow-Origin', '*');
        xhr.setRequestHeader('Access-Control-Allow-Methods', 'GET, POST');
        xhr.setRequestHeader('Access-Control-Allow-Headers', 'x-requested-with,content-type,authorization');
        xhr.setRequestHeader("Content-Type", "application/json");
        xhr.setRequestHeader('Authorization', 'Bearer ' + cc.myGame.gameManager.getToken());
        // xhr.setRequestHeader('Authorization', 'Bearer ' + "");
        // }

        // note: In Internet Explorer, the timeout property may be set only after calling the open()
        // method and before calling the send() method.
        xhr.timeout = 8000;// 8 seconds for timeout

        xhr.send();
    },

    /**
     * post请求
     * @param {string} url 
     * @param {object} params 
     * @param {function} callback 
     */
    httpPost(url, params, callback) {
        cc.myGame.gameUi.onShowLockScreen();
        let xhr = cc.loader.getXMLHttpRequest();
        xhr.onreadystatechange = function () {
            // cc.log('xhr.readyState=' + xhr.readyState + '  xhr.status=' + xhr.status);
            if (xhr.readyState === 4 && xhr.status == 200) {
                let respone = xhr.responseText;
                let rsp = JSON.parse(respone);
                cc.myGame.gameUi.onHideLockScreen();
                callback(rsp);
            } else {
                callback(-1);
            }
        };
        xhr.open('POST', url, true);
        // if (cc.sys.isNative) {
        xhr.setRequestHeader('Access-Control-Allow-Origin', '*');
        xhr.setRequestHeader('Access-Control-Allow-Methods', 'GET, POST');
        xhr.setRequestHeader('Access-Control-Allow-Headers', 'x-requested-with,content-type');
        xhr.setRequestHeader("Content-Type", "application/json");
        xhr.setRequestHeader('Authorization', 'Bearer ' + cc.myGame.gameManager.getToken());
        // }

        // note: In Internet Explorer, the timeout property may be set only after calling the open()
        // method and before calling the send() method.
        xhr.timeout = 8000;// 8 seconds for timeout

        xhr.send(JSON.stringify(params));
    },

    /**
     * 登录专用
     * @param {string} url 
     * @param {object} params 
     * @param {function} callback 
     * @param {string} account 
     * @param {string} password 
     */
    httpPostLogin(url, params, callback, account, password) {
        cc.myGame.gameUi.onShowLockScreen();
        let xhr = cc.loader.getXMLHttpRequest();
        xhr.onreadystatechange = function () {
            // cc.log('xhr.readyState=' + xhr.readyState + '  xhr.status=' + xhr.status);
            if (xhr.readyState === 4 && xhr.status == 200) {
                let respone = xhr.responseText;
                let rsp = JSON.parse(respone);
                cc.myGame.gameUi.onHideLockScreen();
                callback(rsp);
            } else {
                callback(-1);
            }
        };
        xhr.open('POST', url, true);
        xhr.setRequestHeader('Access-Control-Allow-Origin', '*');
        xhr.setRequestHeader('Access-Control-Allow-Methods', 'GET, POST');
        xhr.setRequestHeader('Access-Control-Allow-Headers', 'x-requested-with,content-type');
        xhr.setRequestHeader("Content-Type", "application/json");
        let str = account + "@" + password;
        xhr.setRequestHeader('Authorization', 'Basic' + ' ' + window.btoa(str));

        xhr.timeout = 8000;// 8 seconds for timeout

        xhr.send(JSON.stringify(params));

    }
});

window.HttpHelper = new HttpHelper();
分享到:
评论

相关推荐

    cocoscreator简易框架

    《CocosCreator简易框架详解》 CocosCreator是一款强大的2D游戏开发引擎,以其便捷的可视化编辑和高效的性能深受开发者喜爱。"cocoscreator简易框架"则是基于CocosCreator 2.4.2版本构建的一个简化开发流程的框架,...

    Cocos Creator 框架封装大厅与小游戏设计实现demo

    在这个"标题"中提到的"Cocos Creator 框架封装大厅与小游戏设计实现demo",我们可以理解为一个示例项目,它展示了如何在Cocos Creator中实现游戏大厅以及小游戏之间的交互和模块化设计。 1. **模块化设计**:在游戏...

    基于 Cocos Creator 3.x 版本开发的游戏框架

    - Oops Framework 支持使用 JavaScript 或 TypeScript 进行游戏逻辑编写,两种语言均能充分利用 Cocos Creator 的 API,实现丰富的游戏交互。 - 脚本结构遵循模块化原则,便于代码重用和组织,同时支持事件驱动的...

    cocoscreator使用puremvc

    PureMVC则是一个经典的多层应用程序框架,最初设计用于ActionScript环境,但现在已经有了多种语言版本,包括JavaScript,这使得它在Cocos Creator的JavaScript项目中也能应用。 在Cocos Creator中使用PureMVC,主要...

    cocos加Creator加js麻将游戏源码

    Cocos Creator内置了基于JavaScript的脚本系统,开发者可以通过编写JS代码来控制游戏的逻辑。JavaScript作为Web开发的主要语言,拥有丰富的库和框架,易于学习且具有高度可扩展性。在Cocos Creator中,JavaScript...

    cocos-win32下实现WebView网页内嵌

    在Cocos2d-x项目中,通常会创建一个自定义的类来封装DWebBrowserEvents2接口。例如,你可以看到文件`UIWebViewImpl-win32.cpp`和`.h`,这是实现WebView内嵌的关键部分。你需要继承自Cocos的`Node`类,并且包含必要...

    【JavaScript源代码】CocosCreator学习之模块化脚本.docx

    CocosCreator中的JavaScript模块化采用的是与Node.js类似的CommonJS规范。这意味着每个脚本文件都可以被看作是一个独立的模块,拥有自己的作用域,并且可以通过特定的方式与其他模块进行交互。 ##### 2.1 导入模块 ...

    cocos_creator_Framework

    Cocos Creator Framework是一款基于Cocos Creator游戏引擎的轻量级框架,主要针对JavaScript开发,旨在简化游戏开发流程,提高开发效率。Cocos Creator自身已经提供了一套完整的2D和3D游戏开发工具集,而这个框架则...

    awesome-cocos-creator:Cocos创建者资源汇总

    4. 库与框架:提供了一些预封装的功能库和游戏框架,如物理引擎、UI框架、网络通信库等,便于开发者快速实现特定功能。 三、Cocos Creator的跨平台能力 Cocos Creator支持iOS、Android、Web、Windows、Mac等多个...

    NaiveNet2.0:支持分布式JavaScript WebSocket网络通信组件,扩展支持Java,Python,支持多平台运行。广泛扩展微信小程序,微信小游戏,字节跳动小程序游戏,Cocos Creator,HTML5应用实现实时交互应用

    NaiveNet应用通信组件2.5+正式版 NaiveNet它是基于NIO网络模型设计完成的网络通信组件,这套... NaiveNet支持微信小程序,微信小游戏,字节跳动小程序,字节跳动小游戏,Cocos Creator等主流小程序平台及游戏开发引擎。

    daxigua.zip

    它的API基于Cocos2d-x,但封装为更易于JavaScript开发者使用的接口。例如,你可以使用 `cc` 命名空间下的各种函数来创建、操作游戏对象,如精灵(`cc.Sprite`)、节点(`cc.Node`)和组件(`cc.Component`)。 学习...

    creator-utils

    "creator-utils"是一个针对Cocos Creator游戏引擎的实用工具集,专门设计用于提升JavaScript开发效率。Cocos Creator是一款强大的2D和2.5D游戏开发工具,它集成了图形编辑器、资源管理、脚本系统以及发布流程,使得...

    Ludo-Multiplayer:这是Ludo游戏的多人服务器

    而在服务器端,如Node.js环境下的JavaScript则负责处理网络通信、游戏状态管理和用户数据存储。 1. **WebSocket技术**:为了实现实时的多人游戏体验,Ludo-Multiplayer项目很可能采用了WebSocket协议。WebSocket是...

    微信HTML5在线朋友圈游戏源码带安装部署教程-圣诞消消.rar

    微信小游戏通常会使用特定的开发框架,如Cocos Creator或LayaAir,它们简化了HTML5游戏的开发流程,提供了丰富的组件和资源管理工具。这些框架可能封装了与微信平台的接口,方便开发者快速接入微信生态,实现社交...

Global site tag (gtag.js) - Google Analytics