【发布时间】:2011-05-10 07:50:04
【问题描述】:
我正在制作循环动画,您可以在此处看到:http://bit.ly/blinkingEyes
我有两套动画功能,一套让眼睛眨眼,另一套让眼睛发光,这两个功能独立工作很好,但是当一起工作时,发光效果会打断眨眼效果。
我阅读了有关自定义队列的信息,我相信这就是答案,但如果不让我的浏览器冻结,我就无法让它工作。
你能帮我理解一下吗?
更新:我使用的是 jQuery 1.6
这是我的 jQuery 文件:
jQuery.fx.interval = 24;
$(function(){
/* ----------------------- #eyes1: blinking and glowing ------------------*/
/* ----------------------------- (glowing is defined below) ---------------*/
$('#eyes1 .eye_set1').blink({
frameStop: 5,
endDelay: 4000,
frameHeight: 40,
frameDelay: 100,
framePos: 0
});
$('#eyes1 .eye_set2').blink({
frameStop: 3,
endDelay: 4000,
frameHeight: 40,
frameDelay: 100,
framePos: 0
});
$('#eyes1 .eye_set3').blink({
frameStop: 10,
endDelay: 5000,
frameHeight: 30,
frameDelay: 120,
framePos: 0
});
/* ----------------------- #eyes2: only blinking ------------------ */
$('#eyes2 .eye_set1').blink({
frameStop: 5,
endDelay: 4000,
frameHeight: 40,
frameDelay: 100,
framePos: 0
});
$('#eyes2 .eye_set2').blink({
frameStop: 3,
endDelay: 4000,
frameHeight: 40,
frameDelay: 100,
framePos: 0
});
$('#eyes2 .eye_set3').blink({
frameStop: 10,
endDelay: 5000,
frameHeight: 30,
frameDelay: 120,
framePos: 0
});
/* ---- make each child of #eyes1 to glow ------ */
var d = 250;
$('#eyes1').children().each(function(){
var thisDelay = Math.floor(Math.random()*1160)
$(this).delay(thisDelay).animateLoop({
params_A: {opacity: 0.6},
params_B: {opacity: 1},
duration_A: 800,
duration_B: 800
});
})
})
/* ---- animateLoop: make the glowing effect ------ */
$.fn.animateLoop = function(options) {
var defaults = {
params_A: {opacity: 0.6},
params_B: {opacity: 1},
duration_A: 800,
duration_B: 800
}
var options = $.extend(defaults, options)
var $this = this
function animateLoopSet() {
$this.animate(options.params_A, {duration:options.duration_A, easing:"easeInOutSine"})
.animate(options.params_B, {duration:options.duration_B, easing:"easeInOutSine", complete: function(){animateLoopSet()} })
}
animateLoopSet()
return this
}
/* ---- animateLoop: make the blinking effect ------ */
$.fn.blink = function(options) {
var defaults = {
frameStop: 5,
endDelay: 4000,
frameHeight: 40,
frameDelay: 100,
framePos: 0
}
var options = $.extend(defaults, options)
return this.each(function(){
var $this = $(this)
var countBlink = 0;
function blinkSet() {
if(countBlink <= options.frameStop) {
countBlink++
$this.queue(function(next){
$this.delay(options.frameDelay)
blinkFrame();
next();
})
.queue(function(next){
blinkSet()
next();
})
} else {
countBlink = 0;
$this.queue(function(next){
$this.delay(options.endDelay)
blinkSet()
next();
})
}
}
function blinkFrame(backword){
options.framePos -= options.frameHeight
$this.css({backgroundPosition: '0 ' + options.framePos + 'px'})
}
blinkSet()
})
}
【问题讨论】:
-
你能修复可怕的代码格式吗!?