С помощью Ника, я понял это! Я использовал setTimeout()
, как он предложил, и мне пришлось немного по математике, чтобы выяснить время и продолжительность каждой анимации. Вот что я придумал:
var animationBuffer = 2000; //This is related to the 1500 ms I've specified for the length of the animations. I've simply added an extra half second buffer between the shinking of one option and the expanding of another.
var firstOptionDuration = 6000;
var secondOptionStart = animationBuffer + firstOptionDuration;
var secondOptionDuration = secondOptionStart + 5000
var thirdOptionStart = secondOptionDuration + animationBuffer;
var thirdOptionDuration = thirdOptionStart + 4000
showOption1(option1Text);
setTimeout(hideOption1, firstOptionDuration);
setTimeout(function () {
showOption2(option2Text)
}, secondOptionStart);
setTimeout(hideOption2, secondOptionDuration);
setTimeout(function () {
showOption3(option3Text)
}, thirdOptionStart);
setTimeout(hideOption3, thirdOptionDuration);
function showOption1(string) {
$("#option2, #option3, #leftColumn").fadeOut(1500);
$("#option1").css("zIndex", "5");
$("#option1").animate({
left: "370px",
}, 1500);
$("#option1 img").animate({
width: "500px",
}, 1500, function () {
$("#option1 p").text(string);
});
}
function hideOption1() {
$("#option1 p").text(' ');
$("#option1 img").animate({
width: "175px",
}, 1500);
$("#option1").animate({
//$(this).animate({
left: "743px",
}, 1500);
$("#option2, #option3, #leftColumn").fadeIn(2000);
$("#option1").css("zIndex", "1");
}
function showOption2(string) {
$("#option1, #option3, #leftColumn").fadeOut(1500);
$("#option2").css("zIndex", "5");
$("#option2").animate({
left: "370px",
top: "50px"
}, 1500);
$("#option2 img").animate({
width: "500px",
}, 1500, function () {
$("#option2 p").text(string);
});
}
function hideOption2() {
$("#option2 p").text(' ');
$("#option2 img").animate({
width: "175px",
}, 1500);
$("#option2").animate({
left: "743px",
top: "225px"
}, 1500);
$("#option1, #option3, #leftColumn").fadeIn(2000);
$("#option1").css("zIndex", "1");
}
function showOption3(string) {
$("#option2, #option1, #leftColumn").fadeOut(1500);
$("#option3").css("zIndex", "5");
$("#option3").animate({
left: "370px",
top: "50px"
}, 1500);
$("#option3 img").animate({
width: "500px",
}, 1500, function () {
$("#option3 p").text(string);
});
}
function hideOption3() {
$("#option3 p").text(' ');
$("#option3 img").animate({
width: "175px",
}, 1500);
$("#option3").animate({
left: "743px",
top: "400px"
}, 1500);
$("#option2, #option1, #leftColumn").fadeIn(2000);
$("#option1").css("zIndex", "1");
}
Я могу даже объединить функции показа и скрытия, используя setTimeout()
в функции показа для запуска функции скрытия, поскольку я не ожидаю использовать показ без скрытия.
Еще раз спасибо за вашу помощь!