收藏
回答

大家有没有遇到过两次帧同步对局,上一局的帧,在第二局又发的情况。

框架类型 问题类型 终端类型 微信版本 基础库版本
小游戏 Bug 工具 8.0.24 2.25.3

onSyncFrame入口处打印出来,确定是上一次对局的,帧号和内容都一样。

因为是按钮触发,没有按过,所以不可能是当前这一局的。

重新编译的第一次运行就不会收到。继续跑第二局就大概率出现

onSyncFrame(res) { // 心跳消息 200ms*50 = 10 if ( res.frameId % 50 === 0 ) { console.log('heart'); } if ( !this.fristFrame ) { console.log('get first frame', new Date()); this.broadcastAll("add"); this.fristFrame = true; cc.vv.global.frameStart = true; //保护处理:若第一个帧收到时还未收到gamestart 概率性丢失onGameStart if (cc.vv.global.isStarted == false) this.onGameStart() //发送角色信息 let actionList = [ JSON.stringify({ who : cc.vv.global.myOrder, act : "personInfo", avatarId : cc.vv.global.avatarId, //头像id role: cc.vv.global.role, //角色 mask: cc.vv.global.mask, //面具 gunSurface: cc.vv.global.gunSurface, //枪皮肤 name: encodeURIComponent(cc.vv.global.nickname), })]; this.GameServer.uploadFrame({actionList}); if (cc.vv.global.myOrder == 0){ //延迟1s,等待资源加载完成 setTimeout(()=>{ this.packinBox(cc.vv.global.boxInfo, (resinfo)=>{ //发送包信息 let actionList = [ JSON.stringify({ who : cc.vv.global.myOrder, act : "boxAll", next: cc.vv.global.myOrder, info : resinfo, })]; this.GameServer.uploadFrame({actionList}); }); }, 1000); } } //收到上局结束的帧 保护处理 // if ((this.svrFrameIndex == 0)&&(res.frameId > 100)){ // console.log('get err frame', res); // return; // } res.actionList.forEach(oneFrame => { let frame = JSON.parse(oneFrame); if (frame.act == "leaveOrStay"){ console.log("framerecv", frame); } if (frame.act == "personInfo"){ console.log("framerecv", frame); } }); if (cc.vv.global.frameStart){ this.svrFrameIndex = res.frameId; this.frames.push(res); } // if ( cc.vv.global.frame.length > this.frameJitLenght ) { // cc.vv.global.frameStart = true; // } }
回答关注问题邀请回答
收藏
登录 后发表内容