我把你的小提琴改成了这样:
var changedOpts = $('.cycle-streams').data('cycle.opts');
$('.cycle-streams').mouseover(function() {
//hover in
$('.cycle-streams').cycle('pause');
changedOpts.speedIn = 500;
changedOpts.speedOut = 500;
$('.cycle-streams').cycle('next');
$('.cycle-streams').cycle('resume');
});
$('.cycle-streams').mouseout(function() {
//hover out
$('.cycle-streams').cycle('pause');
changedOpts.speedIn = 3000;
changedOpts.speedOut = 3000;
//$('.cycle-streams').cycle('next');
$('.cycle-streams').cycle('resume');
});
我注意到您出于某种原因重新声明了“changedOpts”。当我在控制台中看到这个变量时,它显示为未定义。既然你已经定义了它,我就继续使用它。
你也从来没有重置循环的状态。我添加了 pause 和 resume 。它现在似乎可以工作,但并不完美。最后一面需要在使用新速度之前清除,因此在尝试加速时剧烈跳跃(例如 3000 到 500)会导致明显的延迟。我还添加了下一条语句。
我注意到,当插件接下来处理它时,它正在清除超时。所以我想如果我存储剩余时间(暂停),然后移动到下一张幻灯片(下一张),然后恢复显示(恢复)时间将恢复。这似乎奏效了。
从快到慢时不需要“下一个”动作,因为离开容器时您通常不会注意到“孤儿”滑动,因为它正在快速循环。我把它放在那里是为了很好的衡量,以防你的速度相差不远。
我还注意到你只改变了一种速度。我假设,不看插件的内容,“速度”选项仅在初始化时使用。添加其他两种速度后,我得到了正确的动作。在查看了插件的“胆量”之后,我确信速度选项用于同步其他两种速度。如果它们都不匹配,您可能会不同步。初始化代码使用'speed'来设置'speedIn'和'speedOut',所以我们需要改变这两个来影响'running'速度。
http://jsfiddle.net/bmXgj/6/
编辑:不需要暂停和恢复。
EDIT2:我确实需要暂停和恢复,但我还需要下一个。此外,“速度”选项一旦设置为第一次开始循环,就可以忽略。它似乎是 speedIn = speedOut = X 的简写