推荐阅读:对于小游戏来说,一般我们能想到的就是微信小游戏,在微信小游戏出来之前,数4399小游戏独大。今天就来和大家分享一下egret接4399平台的流程吧。
首先我们需要加入4399相关的库文件,由于4399使用js,egret项目使用ts,因此需要使用ts,调用js,在这里我把方法封装在库文件夹中,大家可以在左侧加群下载。
下载完成后将文件中得PlatHelper放入egret项目里即可。这时我们可以发现该文件包含PlateHelper.ts,PlateHelper.js这两个文件。接下来在egert项目中调用4399的广告,排行榜,分享之类的功能,只需要调用PlateHelper.方法,就可以了。下面主要介绍分享,排行榜,广告的实现,其他功能同理,调用4399API时,可以查看4399平台上对应的API介绍:4399API
一。分享
PlateHelper.share();
二。排行榜
1.自定义item皮肤
代码如下:
class myGlobalRankItem extends eui.Component implements eui.UIComponent {
// public bg: eui.Image;
public orderIcon: eui.Image;
public head: eui.Image;
public niceName: eui.Label;
public order: eui.Label;
public score: eui.Label;
public constructor() {
super();
}
protected partAdded(partName: string, instance: any): void {
super.partAdded(partName, instance);
}
protected childrenCreated(): void {
super.childrenCreated();
}
/// 初始化ui(老版)
public init2(order: number, score: number) {
this.argOrder = order;
this.argScore = score;
}
// /// 初始化ui(新版本)
// public init(order: number, head: string, name: string, score: number) {
// this.order.text = ""+order;
// this.niceName.text = name;
// this.score.text = ""+score;
// this.orderIcon.visible = order < 4;
// this.order.visible = order > 3;
// if(order <= 3){
// this.orderIcon.source = RES.getRes("order"+order+"_png");
// }
// RES.getResByUrl(head, function(event){
// this.head.source = <egret.Texture>event;
// }, this, RES.ResourceItem.TYPE_IMAGE);
// }
}
2.自定义排行榜皮肤
使用scroll+View管理排行榜中每个item的滑动。
目前排行榜还是旧版的,只能显示排名和得分。
class rankPanel extends eui.Component implements eui.UIComponent {
public groupBtn: eui.Button;
public inviteBtn: eui.Button;
public shareBtn: eui.Button;
/**关闭按钮 */
public returnBtn: eui.Button;
public globalScr: eui.Scroller;
public globalView: eui.Group;
public constructor() {
super();
}
protected partAdded(partName: string, instance: any): void {
super.partAdded(partName, instance);
}
protected childrenCreated(): void {
super.childrenCreated();
}
/// 更新排行榜(老版)
public updateGlobalRank() {
var self = this;
try {
PlateHelper.getRank(function (data) {
console.log("ftest2 getRank", data)
if (data.code == 10000) {
self.globalView.removeChildren();
for (var i = 0; i < Math.min(data.data.length, 30); i++) {
var vl = data.data[i]
var item = new myGlobalRankItem();
item.init2(vl.rank, vl.score);
// item.init(vl.rank,vl.head,vl.name, vl.score);
item.y = 150 * i;
self.globalView.addChild(item);
}
}
});
} catch (e) { console.error(e); }
};
// /// 更新排行榜
// public updateGlobalRank(){
// var self = this;
// try{
// console.log("ftest2 updateGlobalRank 1")
// PlateHelper.getNearRanking(function(data){
// console.log("ftest2 updateGlobalRank 2", data)
// if(data.code == 10000){
// self.globalView.removeChildren();
// for(var i=0; i<data.data.list.length; i++){
// var vl = data.data.list[i]
// var item = new myGlobalRankItem();
// item.init(vl.rank, PlateHelper.getUserAvatar(vl.uId), vl.userName, vl.score);
// self.globalView.addChild(item);
// }
// }
// }, 20);
// }catch(e){ console.error(e); }
// };
}
使用try Cath捕捉异常。使用PlateHelper.getRank调用排行榜接口。10000代表获取成功,10001为获取失败。假设列表最多显示30个item,依次遍历获得的排行榜数据。
3.玩家提交分数
/// 提交分数(不全的老版)
public plateSubmitScore(score, call) {
PlateHelper.submitScore(score, function (data) {
if (call) { call(data); }
})
};
// /// 提交分数(不稳定的新版)
// public plateSubmitScore(score, call){
// if(PlateHelper.isLogin()){
// // 提交分数
// try{
// PlateHelper.submitRanking(score, function(data){
// if(call){ call(data); }
// });
// }catch(e){ console.error(e); }
// }else{
// egret.localStorage.setItem("bSubmitScore", "1");
// PlateHelper.login(function(data){});
// }
// };
三。广告
if (PlateHelper.canPlayAd()) 是否可以播放;可以播放广告时播放广告:PlateHelper.playAd(function (data) 。10000: 开始播放;10001:播放结束。
if (PlateHelper.canPlayAd())
{
//能播放广告
PlateHelper.playAd(function (data)
{
if(obj.code === 10000)
{
console.log('开始播放')
}
else if(obj.code === 10001)
{
console.log('播放结束')
}
else
{
console.log('广告异常')
}
}
});
}
else
{
//不能播放广告
}
需要注意的是,看广告获得奖励,会存在奖励显示不及时,原因是:播放广告时, egret的心跳停止,广告结束不会自动恢复心跳,需要点击一下才能激活。解决办法:注释掉main..ts中的下列代码:
egret.lifecycle.onPause = () => {
egret.ticker.pause();
}
egret.lifecycle.onResume = () => {
egret.ticker.resume();
}
其他功能调用同上。现在可以打H5包了。修改版本号(在这里我修改为1.0.0),在路径lianlian4399\bin-release\web\1.0.0下,用文件中的index.html替换项目中的index.html。然后
在路径lianlian4399\bin-release\web\1.0.0下,全选,压缩为.zip文件 |