cc.director.getScheduler().scheduleUpdate(this, 0, false, this.update);
我利用scheduleUpdate(this, 0, false, this.update)这个定时器,来调用update()里面写的code,里面的内容是调用听牌算法的,我想说,要怎么样才能让if (MJTools.jiao(this._pais, this._index, this._universalPai)) {this._js.push(this._index);}(这个条件是写在update里面的)做完这个条件判断,然后就马上停止计时器,他每次一调用就计算了16遍(或许手牌是有16张的缘故,总共手牌17张。打出一张牌后调用听牌的回调函数),客户端都崩溃了,有什么好办法吗?麻烦各位大神指导一下!谢谢!或者有没哪位大神或者老师,能私聊的。。。急需帮助。。。感激不尽。。。重点是现在他一秒十六次。。。。客户端出牌的时候卡顿特别严重,不知道该如何去做优化了。
唯一的问题就是你在update里面来一直调用听牌算法 这么咸鱼吗 我举个例子
假设现在有13张牌 你应该是依次用听牌算法模拟出每张牌的结果 然后看玩家选择哪一张牌 然后就直接把预先算好的结果发过去就OK了 整个出牌逻辑 玩家出牌前======》玩家出牌后 整个流程 才走了13次听牌算法
你完全不需要用到update update 这种东西 不是这样用的
对啊,我也觉得是这样。。。。我的逻辑是这样的,声明一个index,做下标,然后把整副手牌塞进一个叫MJTools.jiao(this.pais, this.index, this.universalPai)这里面的方法里面,this,pais是手牌,共16张,this._index是下标,从1一直加到37,总共有37钟牌型,this._universalPai是通用牌,可以当成任何牌去使用,如果index加入到手牌中,是可以胡牌的,那么取出这个index,然后加入到显示听牌的UI里面去。可是我即使不用update去调用,我用个循环去遍历,客户端也是一直卡,他要执行完当前函数里的东东,才走下一步
我不知道你说的一直卡是短时间的卡顿还是直接卡死 但是看你这种情况 应该是外包前端的 直接用别人的算法 别人的算法应该是优化的很好的 问题有一大部分出在你自己的逻辑上 导致运算量太大了
直接卡死了。。。。在调用胡牌算法的时候,直接卡死
有报错么,还是说卡着就不动了,还是说卡了一会儿之后又能动了
没有报错,是卡了一会然后又动,因为调用那一长串的胡牌算法(递归函数),就卡得等他算完了,才执行下一步。其实就是1-37的index塞进去手牌去遍历,看看和那个牌能组成胡牌,能胡牌就显示这张牌是可以听的
是方法卡还是执行多次卡,如果是执行多次卡可以判断传入的index是否相同,相同就跳出方法不执行了,如果是方法本来就卡的话只能做优化了
明白!谢谢你
再次谢谢各位的帮助