Egret游戏手Q平台接入问题整理

版权声明:本文为博主原创文章,未经博主允许不得转载。www.bennyxu.com https://blog.csdn.net/bennny/article/details/83350819

1.default.res.json 配置文件下载失败

 RES.addEventListener(RES.ResourceEvent.CONFIG_COMPLETE, this.onConfigComplete, this);
 RES.addEventListener(RES.ResourceEvent.CONFIG_LOAD_ERROR, this.onConfigError, this);
 RES.loadConfig("resource/default.res.json", "resource/");  

上面的是egret的代码,在通过wing打包以后进行了资源路径的转换,转换后的代码

 RES.addEventListener(RES.ResourceEvent.CONFIG_COMPLETE, this.onConfigComplete, this);
 RES.addEventListener(RES.ResourceEvent.CONFIG_LOAD_ERROR, this.onConfigError, this);
 RES.loadConfig("GameRes://resource/default.res.json", "GameRes://resource/");

上面的方式本身是没有问题的,但是通过上面的的事件捕获发现加载错误,通过跟踪发现是路径的问题,在解决方法就是在assetsmanager.js文件中TextProcessor

processor_1.TextProcessor = {
   onLoadStart: function (host, resource) {
       var request = new egret.HttpRequest();
       request.responseType = egret.HttpResponseType.TEXT;
       if( resource.url.indexOf('GameRes') == 0 ){
           request.open(resource.url, "get");
       }else{
           request.open(RES.getVirtualUrl(resource.root + resource.url), "get");
       }
       request.send();
       return promisify(request, resource);
       // let text = await promisify(request, resource);
       // return text;
   },
   onRemoveStart: function (host, resource) {
       return true;
   }
};

简单来说就是在文本类型的文件加载中,有的需要拼接GameRes://前缀,有的是不需要的。而统一的加或者不加都是不正确的,所以需要通过判断来处理。

2.厘米秀启动加载页面竖屏显示问题

本身我们的游戏是横屏的,而启动的时候默认是竖屏的。该问题的修改方法是配置gameConfig.json

{
    "viewMode":2,
    "enterUrl":""
}

viewMode

1.竖屏 2.左横屏(home键在左边)3.右横屏(home键在右边)

enterUrl

H5游戏入口url H5游戏填写,非H5游戏不填

另外在修改以后,需要清理缓存以后修改才能生效,或者说用其他的账号登陆手机QQ重新启动游戏,前提是没有安装过这个游戏的QQ号码。

3.视频广告接入

视频广告的接入按理来说是一个十分简单的事情,但是如果你掉进了坑里那就很惨了。

var videoAd = BK.Advertisement.createVideoAd();
videoAd.onLoad(function () {
    //加载成功
   BK.Script.log(1,1,"onLoad")
});

videoAd.onPlayStart(function () {
    //开始播放
   BK.Script.log(1,1,"onPlayStart")
});

videoAd.onPlayFinish(function () {
    //播放结束
  BK.Script.log(1,1,"onPlayFinish")
});

videoAd.onError(function (err) {
    //加载失败
  BK.Script.log(1,1,"onError code:"+err.code+" msg:"+err.msg);
});

videoAd.show();

如果你按照官方给的demo去接的话,恭喜你入坑了。这个api是旧的,是无法拉取广告的,并且不会提示任何的错误信息。所以在接入广告之前先获取最新的qqPlayCore.js文件。

qqPlayCore.js下载地址

同样给出正确的拉取视频奖励广告的方法:

BK.Advertisement.fetchVideoAd(1 /* resultPage */, function (retCode, msg, handle) {
        if (retCode == 0) {
            updateTxt("拉取视频广告成功!");
            handle.setEventCallack(function (code, msg) {
                BK.Script.log(1, 1, "closeGame"); //关闭游戏
                updateTxt("关闭游戏");
            }.bind(this), function (code, msg) {
                //code ==0 
                BK.Script.log(1, 1, "endVide code:" + code + " msg:" + msg); //视频结束
                updateTxt("视频播放结束");
            }.bind(this), function (code, msg) {
                //code ==0 
                updateTxt("关闭视频webview");
                BK.Script.log(1, 1, "endVide code:" + code + " msg:" + msg); //关闭视频webview
            }.bind(this), function (code, msg) {
                //code ==0 
                updateTxt("开始播放视频");
                BK.Script.log(1, 1, "endVide code:" + code + " msg:" + msg); //开始播放视频
            }.bind(this));
            //跳转至播放界面
            handle.jump();
        }
        else {
            updateTxt("拉取视频广告失败" + "error:" + retCode + " msg:" + msg);
            BK.Script.log(1, 1, "error:" + retCode + " msg:" + msg);
        }
    }.bind(this));

拉取banner广告的方法:

BK.Advertisement.fetchBannerAd(function (retCode, msg, adBannerHandle) {
        if (retCode == 0) {
            //2.开发者 使用adBannerHanlde 
            //2.1 决定是否展示
            adBannerHandle.show(function (succCode, msg, handle) {
                if (succCode == 0) {
                    //
                }
                else {
                    BK.Script.log(1, 1, "展示失败 msg:" + msg);
                }
            });
            //2.2 开发者主动关闭广告。
            //adBannerHandle.close(); 
            //2.3 开发者监听事件
            adBannerHandle.onClickContent(function () {
                //用户点击了落地页
            });
            adBannerHandle.onClickClose(function () {
                //用户点击了X关闭广告
            });
        }
        else {
            BK.Script.log(1, 1, "fetchBannerAd failed. retCode:" + retCode);
        }
    }.bind(this));

另外在开发调试的过程中习惯使用try...catch...方法捕获报错,方便快速的定位问题。

原文链接:http://www.bennyxu.com/index.php/egret/2018/10/25/1070.html

展开阅读全文

没有更多推荐了,返回首页