流星中的动画
我正在制作一个纸牌游戏项目,而我现在面临的问题之一就是动画。 我无法弄清楚如何正确地对卡片进行动画制作,以便两个用户在同一时间看到它的动画效果,并找到正确的位置。 我的意思是,当你的对手拿到一张牌时,你看到一张从对手甲板上的卡片动画到他的手中,而对于对手来说,动画是从他的甲板到他的手中。
我试过使用jQuery动画,我只能做动画的一部分 - 不能代表对手的动画。
我也尝试了一些Atmosphere的软件包,但他们没有按我想要的方式工作。
我试图制作动画的卡片集合有一个卡片的地方场(手,甲板,drop ..等等)。 并且HTML中的每个元素都依赖于地点字段来获取卡片,例如:
Template.playerHand.cards = () ->
Cards.find {userId: Meteor.userId(), place: "hand"}
和HTML是:
<ul class="holder">
{{#each cards}}
<li><img src="{{card.image}}" /></li>
{{/each}}
</ul>
根据以前的地方,是否可以对卡进行动画处理? 就像一张卡片放在甲板上,然后移动到手边,一个特定的动画就会运行。 从手到甲板也一样。 谢谢。
很难用很少的代码来诊断这个,但我猜这样的事情正在发生:
玩家A抽牌:
如果这是动画时间变化的原因,那么解决方案是阻止播放器A的浏览器模拟触发动画的数据库更新。 换句话说,第一台学习卡片的机器应该是服务器,它可以在大致相同的时间将这些新闻同步到两个玩家身上。 有两种方法可以实现这一点:
this.isSumulation
。 基本上,将数据库更新代码保存在if (!this.isSimulation)
等块中,以便它只在服务器上执行。 Meteor.call("drawCard")
,然后使drawCard
方法在服务器上执行。 ( userId
在this
发送)。 在/server
文件夹或Meteor.isServer
块中的文件中定义drawCard
方法,以便客户端无法看到其代码,这意味着它们无法模拟它。 不管怎样,数据库更新首先发生在服务器上,然后同时或多或少地同步到所有客户端,这应该几乎同时触发动画。
如果动画在不同时间发生的原因是因为你的客户的速度连接有很大差异(例如宽带和手机上的连接),那么需要一整套其他的补偿技术。 。 。 但由于这是一个流星问题,我假设你的问题是与流星有关,而不是一般的网络问题。 如果我错了,随时编辑你的问题,我或社区可以发布流星的一些滞后补偿技术。
链接地址: http://www.djcxy.com/p/84231.html上一篇: Animations in Meteor
下一篇: What are the key differences between Meteor, Ember.js and Backbone.js?