【问题标题】:jQuery extremely slow colision animation and problems with width of divjQuery极慢的碰撞动画和div宽度问题
【发布时间】:2014-03-22 19:13:14
【问题描述】:

我正在尝试制作三个圆圈的动画。中间的圆圈应该变大,这行得通。这个圆圈的缩放动画的阶跃函数测试这个圆圈是否与它周围的其他两个圆圈发生碰撞。这似乎有效,但由于某种原因,我必须在该圆圈的动画函数中将生长圆圈的宽度声明为通用变量,而不是在 testcollision 函数本身中调用其宽度方法。这是我的第一个问题。

我的第二个问题发生在中间圆圈变大并成功检测到与它两侧的两个圆圈的碰撞时。 testcollision 函数内部的动画函数使左边的圆圈平滑而完美地移动。右边的圆圈朝着正确的方向移动,但与左边的圆圈相比移动得非常慢,而且动作非常不稳定。我尝试降低右侧圆圈的持续时间,但这只是导致该圆圈“跳转”到动画中的某个点(例如,持续时间为 10,因此跳转到某个点需要 10 毫秒点在它的动画中)在非常缓慢地完全动画之前。

【问题讨论】:

  • jsfiddle 可以在这里找到:jsfiddle.net/direlelephant/eE4x7(请注意,右边的圆圈似乎完全停止,但实际上只是非常非常缓慢地向右移动)。
  • 请用小提琴和信息而不是 cmets 更新您的问题..

标签: javascript jquery jquery-animate


【解决方案1】:

右边动画的问题显然是它接收的最终位置,它必须从你之前声明的变量中接收主圆的左边距+它的宽度,如果你事先知道你不知道的老板最终宽度不一定要一直测试碰撞,动画本身就会产生碰撞的错觉。

改变

var bossmoveright = boss.left + window.bosswidthfind + 6;

var bossmoveright = bossleft + bosswidth + 6;

FIDDLEhttp://jsfiddle.net/eE4x7/1/

【讨论】:

  • 谢谢!你能解释这是为什么吗?似乎 bosswidth 和 window.bosswidthfind 给了我相同的值,当我在 jsfiddle 之外尝试这个解决方案时,右边的圆圈会立即跳转到 bossmoveright 位置,而不是产生碰撞的错觉(大概是因为 bossleft 和 bosswidth 是常数值,所以一旦它们被初始化,它们就满足了向右移动圆圈的条件)。
  • 它的方式是,它正在获取 current position + window.bosswidthfind + 6,它正在被更新并再次动画到“新”位置,但我们不能指望 javascript 正确同步它,我们所做的是将其直接设置到最终位置,动画会自行修复
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-10
  • 2013-09-04
  • 1970-01-01
  • 1970-01-01
  • 2021-02-05
  • 1970-01-01
  • 2017-09-10
相关资源
最近更新 更多