php 白鹭对接,微信好友排行榜 - 白鹭对接

由于小游戏开放数据域是独立的,无论是代码,文件还是资源都是和app分开的

1.把开发的项目和开放域

想象成是两个完全独立的部分,或者把开放域想象成一个沙箱

2.如何沟通

A.项目下向开放域发送数据

发送的参数是不固定的,command是egret demo写好的沟通key,其他参数随便增减

platform.openDataContext.postMessage({

x: this.scroller.x,

y: this.scroller.y,

date: new Date(),

command: "offset"

});

B.开放域中的接收

function addOpenDataContextListener() {

wx.onMessage((data) => {

if (data.command == 'offset') {

offset.x = data.x;

offset.y = data.y;

}

});

}

C.开放域不能向项目发送任何信息

也就是说主从关系是单向的

2.更新自己的信息

发送的数据格式已经写明,数据格式必须正确,可以包含多个,每个obj中只包含一个key,一个value

此为和服务器沟通,不和开放域沟通

let kvData = [{key: "score", value: String(score)}];

wx.setUserCloudStorage({KVDataList:kvData, success:(re)=>{

// if(debug&DM.log) console.log("[wx]success",re);

},fail:(re)=>{

// if(debug&DM.log) console.log("[wx]fail",re);

},complete:(re)=>{

// if(debug&DM.log) console.log("[wx]complete",re);

}});

3.开放域下获取好友数据

记住获得好友的kv数据的keyList必须是你提交的key中的值,可多个,如果不存在则列出来的好友列表kv数据是空的

此为和服务器沟通

wx.getFriendCloudStorage({

keyList:["score"],

success:res => {

}

});

4.如何排序

在success中对res数据进行排序

function preloadFriendData(){

wx.getFriendCloudStorage({

keyList:["metreMax"],//,"metreNow","update_time"

success: res => {

let data = res.data

data.sort((a,b)=>{

let am = getKV(a,"metreMax");

let bm = getKV(b,"metreMax");

if(isLog) console.log('[wx]compare',am,bm);

if(am>bm){

return -1;

}else if(am

return 1;

}

return 0;

});

totalGroup = data;

}

})

}

function getKV(data,key){

if(data.KVDataList.length<=0) return 0

for(let i=0;i

if(data.KVDataList[i].key==key){

return Number(data.KVDataList[i].value);

}

}

return 0;

}

5.如何更改开放域的大小和位置

因为在白鹭下的位置是绘制的bitmap位置,所以很好处理。

更改开放域画布大小

let openDataContext:any = wx.getOpenDataContext();

let sharedCanvas:any = openDataContext.canvas;

sharedCanvas.width = 300;

sharedCanvas.height = 250;

注意调整画布位置和大小后,原有点击算法无效了,需要自己按照信息去修改

6.扩展按钮

原白鹭demo按钮处理是记住位置点,这里你小处理一下,做成一个集成

function context_drawButton(imgage,x,y,width,height,func{

context_drawImage(image, x, y, width, height);

let obj = {l:x,r:x+width,t:y,b:y+height,func:func};

poolBtnInfo.push(obj);

}

然后在 function onTouchEnd(event) {中进行适配

总结

因为开发小程序小游戏本身就限制了大小,所以开放域的开发尽量不要使用额外的库扩展,按照原生api一点一点调试,还好每次改动微信开发者工具内跑的项目都会刷新

res加载是需要时间的,如果res加载完毕之前调用渲染,资源是空的(白鹭的demo)

滚动翻页就别想了,效率性能都不会好,所以在做好友排行榜要不就只一页,要不就做分页(白鹭demo)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值