Egret社区
20银子




最近在做一个卡牌游戏,有两个问题想请教一下各位

卡牌游戏类似于炉石,在玩家使用一张牌(有动画 ①)后,向服务器发送一个使用消息,接着服务器返回一个效果消息,对应动画 ②。在接下来的过程中,会有如上的多种组合出现。有两个问题

1、如何保证接收到的消息对应的动画按序并完整进行?比如接收到一个爆炸动画,再接收到一个出现动画,如何保证这两个动画按照接收消息的顺序显示?有人说使用消息队列,但是消息存储后如何执行(此处不太清楚,不明白如何激活动画函数)?同时如何保证出现动画在爆炸动画完成之后再显示?

2、如上所示,动画②如何保证在动画①结束后执行?动画②对应的是服务器的消息,而动画①对应的是客户端玩家的拖动,如何使动画②执行的时候保证动画①的结束?

以上是两个关于卡牌游戏的疑问,请教一下各位。

同时也欢迎各位在QQ上进行探讨:2789169827


分享到 :
0 人收藏

4 个回复

倒序浏览
山猫  官方团队 | 2019-2-11 09:47:30
to().call().
你可以参考一下这个链接http://developer.egret.com/cn/gi ... en/tween/index.html
白鹭终结者  圆转纯熟 | 2019-2-11 11:57:54
山猫 发表于 2019-2-11 09:47
to().call().
你可以参考一下这个链接http://developer.egret.com/cn/github/egret-docs/extension/tween/t ...

那我消息队列中存储的消息应当为哪种形式?后端给消息会直接激活特定的函数(emit和socket.io),如何存储在消息队列中并激活我直接的函数?
我的代码是这样 SocketAPI.socket.on('useCard', func(data));不太清楚如何存储
山猫  官方团队 | 2019-2-11 12:41:03
你可以在.call里面做判断
siluo123  登堂入室 | 2019-2-11 13:46:15
简单说下我的思路因为不确定你说的是ui动画还是序列帧动画或者是骨骼动画什么的。但是实现的思路的话大致上 应该是。
1.通过websocket 建立长连接 并且保证客户端时间和服务器时间的一致性。
2.在用户使用某张牌的时候在客户端 判断是否可以使用 如果可以使用则像后台发起 使用卡牌 的消息
3.服务器接收到 使用 卡牌命令 的时候 根据服务端的卡牌数据 判断该操作是否可以进行 如果可以进行 计算出结果并且下发 结果消息给指定的用户例如  你和你的对手以及正在 观战的人。
4.客户端接收到消息 开始处理 消息  并把消息对象存放到指定的list 集合当中。并且判断当前是否有动画正在播放如果有直接push到list集合就可以了。如果没有则直接播放。
5.对于动画的检测的话根据你的描述的话   爆炸应该是指 序列帧动画 ,卡牌的移动 应该是指 ui的位移建议你借鉴一下
序列帧动画 :https://developer.egret.com/cn/article/index/id/596
ui动画:http://developer.egret.com/cn/gi ... en/tween/index.html
然后在每个动画的播放的结束时候 检测list中是否还有需要处理的消息。如果有就按顺序继续处理并且从list中移除被处理的消息,如果没有则播放结束。
对于动画播放结束的检测的话 上面给的两个网址的官方教程里面都有很详细的阐述。
建议参考一下网上的一些 h5中国象棋游戏的源码,那个还挺容易弄得。而且机制基本上是一样的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号 )

Powered by Discuz! X3.4 © 2001-2019 Comsenz Inc.

返回顶部